dotnet.exeNuGet 關于和之間差異的檔案讓我非常困惑nuget.exe。讓我表達我對整個 .NET 生態系統的理解,并介紹我感到困惑的地方:
好的,所以我們有了 .NET,它是一個用于構建各種應用程式的框架。.NET 有幾個實作- 即 .NET Framework 版本 1 - 4.8,然后是 .NET Core 1.0 - 3.1,然后是 .NET 5 。
除此之外,我們還有所謂的“.NET Standard”——它是實作符合的 API 規范,因此為特定標準撰寫的應用程式肯定可以在符合此版本 .NET Standard 的任何實作上運行。
每個用 .NET 撰寫的應用程式或庫都指定了TargetFramework它的目標。這意味著此應用程式只能在這些 .NET 實作上運行。
到目前為止,一切都很好?
現在,我們有了 NuGet,它是 .NET 專案的包管理器。NuGet 有 2 個 CLI 工具,在介紹它們時,檔案告訴我們dotnet.exe:
用于 .NET Core 和 .NET Standard 庫以及任何 SDK 樣式專案(例如以 .NET Framework 為目標的專案)的 CLI 工具。包含在 .NET Core SDK 中,并在所有平臺上提供核心 NuGet 功能。...
好的 - “對于 .NET Core 和 .NET Standard 庫”是什么意思?這是否意味著針對 .NET Core 和 .NET Standard 的庫應該使用dotnet.exe?
此外 - “任何 SDK 風格的專案,例如以 .NET Framework 為目標的專案”是什么意思?也許我沒有正確理解英語 - 這是否意味著“任何 SDK 風格的專案”,而針對 .NET Framework 的專案總是這樣的專案?或者它是否意味著“任何以 .NET Framework 為目標的 SDK 風格的專案”?我真的沒明白。專案是 SDK 專案還是非 SDK 專案與其所針對的 .NET 實作之間是否存在關系?
uj5u.com熱心網友回復:
(在 Windowsdotnet上dotnet.exe)CLI 工具提供了 nuget 功能。它適用于所有 .NET Core、.NET Standard 和 .NET >= 5 專案。您應該能夠使用該dotnet工具打包任何面向 .NET Core、.NET 5 或更新版本以及 .NET Standard 的專案。nuget仍然可以作業,但dotnet更容易,更“常見”,并且在這種情況下有更好的檔案。
.NET 使用專案檔案已有很長時間了。“SDK 風格的專案檔案”是傳統專案檔案的新變體,與 .NET Core 一起使用,.NET >= 5。
Project您可以通過在xml 元素中,或通過添加單獨的SDK元素,甚至Import是檔案來標記專案檔案是 SDK 樣式的專案Sdk.props。
默認情況下,.NET Core 和 .NET >= 5 是 SDK 樣式專案。.NET Framework 專案不是,您自己已明確將它們遷移到 SDK 樣式。
換句話說,如果您想使用dotnetnuget 將東西打包,并且您正在使用 .NET Framework 應用程式,則需要遷移到新的 SDK 樣式專案,然后才能使用它dotnet來創建 nuget 包。
更多資訊:https ://docs.microsoft.com/en-us/dotnet/core/project-sdk/overview
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/442181.html
上一篇:如何在使用我的庫的專案中添加我的所有.net標準庫DI依賴項而不單獨添加它們
下一篇:我的API未授權它自己生成的令牌
