在VSTS中构建NuGet包时,永远不会更新版本

时间:2017-08-14 16:56:25

标签: visual-studio nuget azure-devops nuget-package

我最近开始创建自己的NuGet包,今天我想在VSTS上建立一个构建版本,它会自动从VS-Project生成一个NuGet包,然后将其推送到VSTS-Feed。过了一段时间,我成功地构建了项目并将其推送到Feed中。为了持续集成,我想添加一个版本号,我通常在AssemblyInfo文件中编写。这引出了我现在遇到的问题:

我可以看到这个数字在构建日志中被更改,当我下载它并将其本地集成到VS中时,版本是正确的。

但不在我的饲料上。我的饲料完全忽略了这个数字。版本号在某种程度上似乎是1.0.0,并且永远不会改变。因此,在重新构建之后,我只会收到一条错误消息,因为:

  

Feed已包含'SampleNuGetPackage 1.0.0'

我希望这些信息和这些screenshots足以让您理解我的问题:)

3 个答案:

答案 0 :(得分:1)

为了解决问题,请查看以下方面:

1。检查是否在AssemblyInfo.cs文件中正确更改了Assmbly Version

假设您需要将程序集版本从1.0.0.0更改为1.0.1.0,您应该更改AssemblyInfo.cs中的以下行:

[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]

注意:汇编版本格式为major.minor.build.revision,前三个数字可以反映在软件包版本中。所以你只需要改变前三个数字。

2。检查生成的变量名称是否为AssemblyInfo.AssemblyVersion

在Assembly Info Reader任务后添加 PowerShell任务以列出所有变量。 PowerShell任务的设置如下:

类型:内联脚本

内联脚本:Get-childItem env:

假设您已将AssemblyInfo.cs中的版本更改为1.0.1.0,然后对构建进行排队。在Powershell任务的构建日志中,找到变量名称以ASSEMBLYINFO_开头,值为1.0.1.0。如果有名为ASSEMBLYINFO_ASSEMBLYVERSION的变量且值为1.0.1.0,则表示您在 NuGet包任务中使用了正确的环境AssemblyInfo.AssemblyVersion。否则,您应该使用值为1.0.1.0的正确变量名。

答案 1 :(得分:1)

再次检查整个构建过程后,我注意到了我的错误。 在NuGet pack命令的设置中,存在以下属性:要打包的配置。如果您不使用 .csproj 文件生成NuGet包,则不应设置此属性,我不是。从属性中删除值后,构建过程正确生成了包并将其添加到源中,其中包含我在 AssemblyInfo 文件中设置的版本号。

答案 2 :(得分:0)

我是另一名实习生,试图帮助你!

因此,我发现您正在使用基于环境变量的自动版本控制:

Assemblyinfo.Assemblyversion

这是您在visual studio中存储在CSProj文件中的版本号。您可以通过以下方式在代码中更改此内容:

  

右键单击项目>属性>应用程序> AssemblyInformation

要更改此属性,您必须对代码进行更改并将其每次推送到repo,而不是这样,您应该使用其他一些版本控制方法。也许使用build#?