使用 VSTS 和 Nuget Pack 自动添加 nuget 依赖项

Automatically add nuget dependencies using VSTS and Nuget Pack

我正在使用 Visual Studio Team Services 运行 构建我作为 Nuget 包发布的库。

该项目包含一个 nuspec 文件,其中指定了名称、描述、项目 url 和其他静态信息。

VSTS 中的 Nuget 包构建操作引用了此 nuspec 文件

我也想包括有关依赖项的信息,但是,我不想在 nuspec 中手动管理它 XML(容易出错且耗时)。

nuspec 文件不包含该元素,所以我希望 VSTS NuGet 打包操作会自动包含它们。

有什么办法可以实现吗?

您可以使用新的 "SDK style" csproj 格式将 NuGet 问题移到单个 csproj 文件中,这样您就可以在一个地方指定依赖项和静态元数据。

最好开始创建 .NET 标准库并将 <TargetFramework> 属性 从 netstandard2.0 更改为您之前定位的框架 - 例如net452。 (或者 select 合适的 .NET Standard 版本)

此项目类型可以使用 msbuild /t:Packdotnet pack

打包

当您添加项目或 NuGet 包引用时,这些将在打包期间自动转换为依赖项,如果您通过通配符 (1.2.*) 引用包,则包将取决于还原期间解析的版本。 VS 提供了一个对话框,用于在项目属性中编辑此项目类型的包元数据。

显然,存在一个非常简单的解决方案。
您可以将 VSTS Nuget 包任务设置为使用 csproj 文件(而不是 nuspec),但它仍将访问 nuscpec 以获取元数据。请参阅以下日志:

重申一下,不要在 VSTS 的构建任务中设置 nuspec 文件的模式,而是设置 csproj 文件的路径。