![](/img/trans.png)
[英]Is it possible to reference a project that exists in the solution and use NuGet package reference as fall-back if not in .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.