簡體   English   中英

nuget 中的打包項目參考:.net core

[英]Packaging project reference in nuget : .net core

目前我有一個要求,我們有單獨的合同和實施程序集。 創建 nuget 包並嘗試使用 nuget 包后,它失敗,因為包管理器無法找到依賴(合同)程序集。

這似乎是 .net core 中的一個懸而未決的問題。

https://github.com/dotnet/cli/issues/3959

無法理解為什么這么簡單的事情在 .net core 中不起作用。 正在尋找解決此問題的方法。

解決起來很簡單。 您有 2 個選擇:

A) 將所有項目打包並發布為 Nuget 包:

您只需將您的依賴項作為ProjectReference添加到您的主項目中。 並使用項目引用繼續開發。 還必須打包所有依賴項目。 當您想使用相同版本發布包時,只需運行:

dotnet pack -p:PackageVersion=2.1.0也可以添加任何其他pack參數

由於在pack期間所有ProjectReference將轉換為包依賴項。 並且version號級聯到所有包中。

在這種情況下,您的原始主項目及其所有依賴項都將被 Nuget 打包。 現在你必須發布所有。 當你想安裝你的 Nuget 包時,它會安裝它的所有依賴項以及指定的相同版本。

B) 將所有輸出 DLL 打包到一個 Nuget 包中:

您只能將一個項目發布為 Nuget 包,並將所有其他 DLL 打包到該包中。 首先抑制pack將依賴項從 Project 轉換為 Package 找到您的ProjectReference並將PrivateAssets="All"添加到其中。 應該是這樣的:

<ProjectReference Include="yourproj.csproj" PrivateAssets="All" />

並將以下部分添加到您的.csproj文件(到應打包的項目)以打包依賴 DLL,<PackagePath>更改 DLL 名稱和框架版本

<ItemGroup>
  <_PackageFiles Include="$(OutputPath)\yourproj.dll">
    <BuildAction>None</BuildAction>
    <PackagePath>lib\net5.0</PackagePath>
  </_PackageFiles>
</ItemGroup>

閱讀文檔后,我明白 .net core 不鼓勵項目引用,而是建議使用包引用。 這在以下文檔的描述標題中提到。

https://github.com/dotnet/docs/blob/master/docs/core/tools/dotnet-pack.md

我將我的合同程序集發布到 nuget 包,並在實現中作為 nuget 包使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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