如何创建具有嵌套依赖项的 Nuget 包

How to create Nuget package with nested dependencies

我正在研究 .NET Core 解决方案。对于解决方案中的其中一个项目,我需要构建一个 Nuget 包。

项目 A 在解决方案中引用了另一个项目 B,设置为项目引用。项目 B 依赖于 Nuget 包 C。

现在,当我为 A 创建 Nuget 包时,它包括 A.dll 和 B.dll 但不包括 C.dll

谁能帮我解决这个问题?如何包含所有 3 个 .dll?

谢谢, 安迪

您当然可以通过创建自己的 nuspec 文件来解决这个问题。我不确定如何在 csproj 文件的上下文中执行此操作。

例如,对于#csla,我们管理所有我们自己的nuspec files,因为有太多活动部件。

在 nuspec 文件中,您可以列出要包含的特定文件,以及任何包依赖项。因此,在您的示例中,听起来您的 nuspec 将包含项目 A 和 B 程序集,因此如下所示:

<files>
  <file src="..\..\bin\Release\netstandard\netstandard2.1\**\A.dll" target="lib\netstandard2.1" />
  <file src="..\..\bin\Release\netstandard\netstandard2.1\**\B.dll" target="lib\netstandard2.1" />
</files>

并且会声明对包 C 的依赖。

<dependencies>
  <group targetFramework="netstandard2.1">
    <dependency id="C" version="1.0.0" />
  </group>
</dependencies>

您可以在#csla 存储库中看到大量示例。也许最接近的(不使用通配符)是 Csla.Blazor.nuspec 文件。

有关 dotnet.exe pack 向 nuget 客户端团队提出的功能请求,请参阅 https://github.com/NuGet/Home/issues/3891。该问题存在解决方法和争论。

谢谢,Rob Relyea,NuGet 客户端团队