Buy Me a Coffee

CSharp 專案檔範例說明

在 Linux 環境下開發 CSharp 應用程式時,專案檔 (csproj) 的設定與 Windows 環境有些許差異。本文將提供兩個常見情況的專案檔範例,分別是開發單一業務程式和開發共用副程式。介紹了在Linux環境下使用C#進行開發時,如何設定專案檔(csproj)以支援單一檔案發布和共用程式庫的配置。透過精心設計的專案檔設定,開發者能夠將應用程式和其依賴項打包成單一可執行檔,這樣不僅便於部署,也有助於降低運行時的複雜性。以及如何排除特定參考項目,以避免將共用動態連結庫(DLL)包含在單一可執行檔中,從而實現更靈活的部署策略。

把專案編譯為單一執行檔,將其他所需參照合併為單一執行檔案 csproj 範例

  • 下列為 Linux 專用的編譯用一般業務程式 Project File,用於編譯單一執行檔,會產生程式名稱以及程式名稱.pdb。
  • 參考其他共用時請務必使用 <ProjectReference Include..> 方式,並且設定 <ExcludeFromSingleFile>true</ExcludeFromSingleFile>,避免編譯時將共用 DLL包入單一執行檔內。
  • 編譯時指令:dotnet publish -c release -p:PublishReadToRun=true –self-contained true
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NLog" Version="5.0.1" />
    <PackageReference Include="System.Data.Odbc" Version="6.0.0" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="AnotherProject.csproj">
      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
    </ProjectReference>
  </ItemGroup>
</Project>

開發共用副程式範例

  • 下列為 Linux 專用的編譯用共用DLL的專案。
  • 編譯時指令:dotnet publish -c release -p:PublishReadToRun=true -r linux-x64 –self-contained false
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <BaseOutputPath>bin</BaseOutputPath>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.0" />
  </ItemGroup>
</Project>

以上是在 Linux 環境下開發 CSharp 應用程式時,針對單一執行檔和共用程式庫的專案檔範例。透過適當的設定,可以確保專案能夠正確編譯和發布。請根據實際需求進行調整和使用。