visual-studio - 如果可用,将 VersionSuffix 设置为提交 id
问题描述
我正在尝试通过 environment variable 将我的 DLL 上的版本后缀设置为 Azure DevOps 上可用的 Git 提交 ID Build_SourceVersion
。如果该环境变量不可用,则应将后缀设置为随机 GUID。我的Directory.Build.props
文件如下所示:
<Project>
<PropertyGroup>
<VersionPrefix>2.1.0</VersionPrefix>
<VersionSuffix Condition="'$(Test-Path env:Build_SourceVersion)' == 'True'">$((Get-Variable Build_SourceVersion).Substring(0, 7))</VersionSuffix>
<VersionSuffix Condition="'$(Test-Path env:Build_SourceVersion)' == 'False'">$([System.Guid]::NewGuid().ToString(N).ToLower().Substring(0, 7))</VersionSuffix>
</PropertyGroup>
</Project>
虽然当我构建我的 DLL 时没有设置任何产品版本。我在这里做错了什么?如果我尝试将DLL 设置为随机 GUID <VersionSuffix>
。$([System.Guid]::NewGuid().ToString(N).ToLower().Substring(0, 7))
如果我尝试$((Get-Variable Build_SourceVersion).Substring(0, 7))
,至少不会出现任何错误,但组合似乎不起作用。
解决方案
如果可用,将 VersionSuffix 设置为提交 id
当您想要从 MSBuild 引用 Azure devops 构建变量时,您需要引用代理设置的环境变量。
所以你可以在 MSBuild 中使用它$(Build_SourceVersion)
而不是(Get-Variable Build_SourceVersion)
.
然后我们可以使用以下脚本来获取该Substring
值:
<PropertyGroup>
<VersionSuffixTest>$(Build_SourceVersion)</VersionSuffixTest>
</PropertyGroup>
<PropertyGroup>
<VersionPrefix>2.1.0</VersionPrefix>
<VersionSuffix Condition="'$(VersionSuffixTest)' != ''">$(VersionSuffixTest.Substring(0, 7))</VersionSuffix>
</PropertyGroup>
作为测试,我使用 MSBuild 目标输出该值:
<Target Name="TestTask" AfterTargets="Build">
<Message Text="$(VersionPrefix)" Importance="high" />
<Message Text="$(VersionSuffix)" Importance="high" />
</Target>
然后,我可以获得该值:
希望这可以帮助。
推荐阅读
- botframework - 如何使用 BotAuthentication botframework v3
- java - 如何从 onItemClicklistener 上的联系人 ListView 获取 phone_Number
- excel - Thomson Reuters EIKON 没有使用我的 VBA 宏进行更新/计算。哪一行代码可以帮助我在下面?
- python - 如何在我的 selenium python 程序中使用 chrome 扩展?
- java - 此代码如何显示鼠标已单击?
- c++ - 如何改进我的代码,使其不会因超时而终止?(HackerRank 挑战)
- android - 单击 recyclerview 项目时从 uri 播放音频文件
- r - 如何在R中将字符向量视为整数或数字
- javascript - React hook setState 导致无限渲染
- php - 使用ajax禁用当前单击的按钮