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 應用程式時,針對單一執行檔和共用程式庫的專案檔範例。透過適當的設定,可以確保專案能夠正確編譯和發布。請根據實際需求進行調整和使用。