如何创建具有嵌套依赖项的 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 客户端团队
我正在研究 .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 客户端团队