我最近开始创建自己的NuGet包,今天我想在VSTS上建立一个构建版本,它会自动从VS-Project生成一个NuGet包,然后将其推送到VSTS-Feed。过了一段时间,我成功地构建了项目并将其推送到Feed中。为了持续集成,我想添加一个版本号,我通常在AssemblyInfo文件中编写。这引出了我现在遇到的问题:
我可以看到这个数字在构建日志中被更改,当我下载它并将其本地集成到VS中时,版本是正确的。
但不在我的饲料上。我的饲料完全忽略了这个数字。版本号在某种程度上似乎是1.0.0,并且永远不会改变。因此,在重新构建之后,我只会收到一条错误消息,因为:
Feed已包含'SampleNuGetPackage 1.0.0'
我希望这些信息和这些screenshots足以让您理解我的问题:)
答案 0 :(得分:1)
为了解决问题,请查看以下方面:
假设您需要将程序集版本从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
,前三个数字可以反映在软件包版本中。所以你只需要改变前三个数字。
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#?