h5可以來做網站嗎搜索大全瀏覽器
記錄平日中瑣碎的.net 知識點。不定期更新
目標框架名稱(TFM)
我們創(chuàng)建C#應用程序時,在項目的工程文件(*.csproj)中都有targetFramework標簽,以表示項目使用的目標框架
各種版本的TFM
.NET Framework
.NET Standard
.NET5 及更高版本
UMP等
參考文檔:針對 NuGet 的目標框架參考 | Microsoft Learn
如何創(chuàng)建多TFM的項目
首次創(chuàng)建項目時,建議創(chuàng)建 .NET Standard 類庫,因為它提供了與最廣泛使用項目的兼容性。 使用 .NET Standard 可以默認向 .NET 庫添加跨平臺支持。 但是,在某些情況下,可能還需要包含針對特定框架的代碼。 本文介紹如何針對SDK樣式的項目執(zhí)行該操作。
對于 SDK 樣式的項目,可以在項目文件中配置對多個目標框架(TFM)的支持,然后使用dotnet pack
?或?msbuild /t:pack
?創(chuàng)建包。
?請注意:.NET 和 .NET Standard 目標是為 .NET 庫添加跨平臺支持的最佳方式。
- .NET Standard是一套 .NET API 規(guī)范,在所有 .NET 實現中推出。 以 .NET Standard 為目標可以生成受限于使用給定版本的 .NET Standard 中的 API 的庫,這意味著實現該版本的 .NET Standard 的所有平臺都可以使用它。
- .NET 6-8 是 .NET 的實現。 每個版本是具有一組統(tǒng)一功能和 API 的單一產品,可用于 Windows 桌面應用和跨平臺控制臺應用、云服務和網站。
步驟
-
在 Visual Studio 中或使用?
dotnet new classlib
?創(chuàng)建新的 .NET Standard 類庫。建議創(chuàng)建 .NET Standard 類庫以獲得最佳兼容性。
-
編輯 .csproj?文件以支持目標框架。 例如,更改
<TargetFramework>netstandard2.0</TargetFramework>
更改為:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
確保將 XML 元素從單數更改為復數(將“s”添加到開始和結束標記)。
-
如果你有任何僅在一個 TFM 中工作的代碼,則可以使用?
#if NET45
?或?#if NETSTANDARD2_0
?分隔與 TFM 相關的代碼。 (有關詳細信息,請參閱如何設定多目標。)例如,可以使用以下代碼
public string Platform {get {
#if NET45return ".NET Framework"
#elif NETSTANDARD2_0return ".NET Standard"
#else
#error This code block does not match csproj TargetFrameworks list
#endif}
}
參考文章:項目文件中 NuGet 包的多目標 | Microsoft Learn
NuGet packages.config 文件參考 | Microsoft Learn