在MSDN(https://channel9.msdn.com/Events/Build/2018/THR5057)的此视频中,标记为3:34秒,演示者演示了如何将Build ID附加到nuget的版本。他在MSBuild参数中指定:
/ t:pack /p:PackageVersion=1.0。$(Build.BuildId)
因此,当项目由VSTS生成时,nuget程序集的修订版号将使用生成ID。
我想做类似的事情。与其在构建定义中对1.0进行硬编码,我想从.csproj文件中检索它。我正在使用新的.csproj文件来存储nuget信息。
例如,我想在csproj中指定:
0.0.1-beta
然后,VSTS将附加BuildID并生成程序集版本为0.0.0.1-beta.49(49是构建ID)
答案 0 :(得分:1)
我最终的行为与Shayki Abramczyk提出的相反。
我使用了一个名为“变量任务包”的任务。可以在这里找到(并且在获得此答案时是免费的):https://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks#qna
使用此任务,我设置了两个变量:$(BuildId)和$(ReleaseType)。请参阅答案末尾的设置快照。
然后,在CSPROJ项目文件中,我修改了nuget版本以使用两个环境变量。这是项目文件的片段:
<PropertyGroup>
<Version>0.0.0.0$(BuildId)$(ReleaseType)</Version>
<FileVersion>0.0.0.0$(BuildId)$(ReleaseType)</FileVersion>
...
</PropertyGroup>
重要提示:请注意$(BuildId)前面的多余0。我必须添加它才能在本地构建。没有它,构建会因版本格式错误而失败。
现在,构建后,我得到了buildid作为我的修订号和发布类型的附件。
以下是显示两个变量的配置的屏幕截图。
答案 1 :(得分:0)
您可以创建一个Power Shell脚本,该脚本从csproj文件中检索版本,然后使用以下命令将版本添加到新的环境变量中:Set-VstsTaskVariable
例如:
$csprojId = $retrivedIdfromTheFile
Set-VstsTaskVariable -Name "CSPROJ_ID" -Value $csprojId
现在,您可以在MSBuild参数上使用CSPROJ_ID变量:
/p:PackageVersion=$(CSPROJ_ID).$(Build.BuildId)