簡體   English   中英

從同一解決方案中的另一個 nuget 包項目引用 nuget 包項目

[英]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 packa .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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM