[英]Reference nuget package project from another nuget package project in same solution
我正在創建幾個我想發布為 Nuget 包的 .NET Standard 1.6 庫。 它們共享一個公共庫,這是與前兩個相同的解決方案中的第三個項目。 共享庫本身沒有價值,但我假設如果我希望人們在同一個項目中同時使用這兩個庫,我也應該將共享庫發布為 Nuget 包。 如果我不這樣做,我會擔心同一共享庫的多個副本“沖突”或在出現版本不匹配問題時沒有正確警告。
我是否正確地認為共享庫也需要是 Nuget 包? 有沒有辦法將共享庫引用為 Nuget 包,但在此解決方案中開發/調試 2 個主要庫時,使用就像是項目引用一樣? 如果我必須發布到 Nuget.org 並等待包通過 Nuget.org 系統傳播,然后再在調試會話中使用更改的版本,這真的會減慢開發速度。 請注意,這些是 .NET Standard 項目。 當 Nuget 包是必需的輸出時,我發現如何在同一解決方案中引用相關項目,但這似乎不適用於 .NET Standard(在打包期間出現錯誤),我也不確定 .NET Standard 是否不使用 nuspec 文件再多也會造成問題。
我也不確定 .NET Standard 不再使用 nuspec 文件是否也會導致問題。
.NET Standard 仍然使用 .nuspec 文件,使用老式nuget pack
和a .nuspec
將解決這個問題。
根據文檔dotnet pack :
打包項目的 NuGet 依賴項被添加到 .nuspec 文件中,因此在安裝包時可以正確解析它們。 項目到項目的引用不打包在項目中。 目前,如果您有項目到項目的依賴關系,則每個項目必須有一個包。
因此,要在 NuGet 包中包含項目到項目的引用,您需要手動維護.nuspec
文件並添加依賴項。 您可以參考使用 Visual Studio 2015 創建 .NET Standard 包以獲取詳細信息。
此外,dasMulli 提供了一種更簡單的方法來完成此操作,包括添加和連接自定義目標:
<Project>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\testprivatelib\testprivatelib.csproj" PrivateAssets="All" />
</ItemGroup>
<Target Name="IncludeP2PAssets">
<ItemGroup>
<BuildOutputInPackage Include="$(OutputPath)\testprivatelib.dll" />
</ItemGroup>
</Target>
</Project>
源代碼來自: “donet pack”不包括項目引用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.