繁体   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