gpt4 book ai didi

c# - nuget : .net core中的打包项目引用

转载 作者:行者123 更新时间:2023-12-03 22:20:06 30 4
gpt4 key购买 nike

目前我有一个要求,我们有单独的契约(Contract)和实现程序集。创建 nuget 包并尝试使用 nuget 包后,它失败,因为包管理器无法找到依赖(契约(Contract))程序集。

这似乎是 .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 number 级联到所有包中。
在这种情况下,您的原始主项目及其所有依赖项都将被 Nuget 打包。现在你必须发布所有。当你想安装你的 Nuget 包时,它会安装它的所有依赖项以及指定的相同版本。
B) 将所有输出 DLL 打包到一个 Nuget 包中:
您只能将一个项目发布为 Nuget 包,并将所有其他 DLL 打包到该包中。第一 抑制 pack将依赖项从项目转换为包 .找到您的 ProjectReference并添加 PrivateAssets="All"到它。应该是这样的:

<ProjectReference Include="yourproj.csproj" PrivateAssets="All" />
并将以下部分添加到您的 .csproj文件(到应该打包的项目)来打包依赖DLL, 更改 DLL 名称和 Framework version<PackagePath> .
<ItemGroup>
<_PackageFiles Include="$(OutputPath)\yourproj.dll">
<BuildAction>None</BuildAction>
<PackagePath>lib\net5.0</PackagePath>
</_PackageFiles>
</ItemGroup>

关于c# - nuget : .net core中的打包项目引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699901/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com