使用VSTS CI构建C#类库和NuGet push,如何定义NuGet包的名称?

时间:2018-05-04 11:17:22

标签: .net nuget azure-devops nuget-package azure-pipelines

我有一个针对.NET 4.7.2的C#类库,每当我推送提交时,我都会使用VSTS构建并部署到私有NuGet包源。一切正常。

我还有一个针对.NET 4.0的遗留项目,我想在其中使用上面的库。我已经创建了我的库的一个新分支并将其移植到目标.NET 4.0(必须删除一些不受支持的功能)并创建了一个新的VSTS CI构建,该构建由推动此分支触发。再次,一切正常。

问题是生成的NuGet包只是显示为.NET 4.7.2的新版本!理想情况下,我希望在我的私人Feed中显示2个包:MyPackageMyPackage.dotnet40

这甚至可能吗?或者我应该做一些完全不同的事情?

解决

感谢@ DanielMann的回答,我通过向我的项目添加.nuspec文件并在我的VSTS构建定义中重新配置(略微)我的NuGet包任务来解决了这个问题:

  1. 在命令提示符
  2. 中导航到项目 root(不是解决方案)
  3. 运行nuget spec以在.nuspec文件旁边创建.csproj文件(可能需要将nuget.exe添加到您的路径中)
  4. 填写.nuspec文件。我替换了VSTS自动替换的除$version$之外的所有占位符,但您可以在高级>其他构建属性下的Nuget包任务中为所有占位符提供值。 重要的是$id$占位符,将其更改为您希望调用包的任何内容
  5. .nuspec添加到源代码管理并提交/推送
  6. 更新NuGet包任务,使其指向新的.nuspec文件,而不是.csproj文件

2 个答案:

答案 0 :(得分:1)

如果您打包的项目包含.nuspec文件,请更改NuSpec文件中的包名称。

如果它基于项目名称,请更改项目名称。

基本上,这里没有问题 - 你分叉了代码库,所以你有两个完全独立的实体,你可以做任何你想做的事。

答案 1 :(得分:0)

您必须创建单独的Feed并定位新项目。