如何从 csproj 生成 nuspec 中的依赖项(或 nupkg 在其元数据中包含依赖项)

Yua*_*Guo 5 c# continuous-integration dependencies nuget

假设有一个解决方案,包含项目A、B。

  • A 以传统方式引用 B。(添加引用 -> 项目 -> B)

  • B 仅依赖于 .NET 框架库。

这是我所做的:

nuget pack A.csproj
Run Code Online (Sandbox Code Playgroud)

它将生成 A.nupkg,无需

<dependencies>
      <dependency id="B" version="3.0" />
</dependencies>
Run Code Online (Sandbox Code Playgroud)

我想要的是 A.nupkg在其元数据中包含对 B 的依赖。

我知道你可以在A.csproj同一个文件夹下放置一个A.nuspec,并在A.nuspec中设置对B的依赖。但生成和维护需要人工成本。由于 A.csproj 知道 B,有什么方法可以在手动操作的情况下完成此操作?

或者

对此有什么建议吗?

Yua*_*Guo 2

通过在 MSBuild 构建脚本中添加两个目标来实现这一点:

<GenSpecCommand>$(NuGetCommand) spec -Force</GenSpecCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -IncludeReferencedProjects</BuildCommand>
Run Code Online (Sandbox Code Playgroud)

希望它对其他人有用。