我正在使用GitVersion来版本化我的C#.NET应用程序。我的应用程序还有一个-V选项,用于显示二进制文件的当前版本。如何将数据从GitVersion导入应用程序,以便在每次构建时更新?
GitVersion
-V
fnx2tebb1#
我使用PowerShell脚本和预构建事件的组合得到了它:脚本如下(在项目目录中保存为gitversion.ps1:
gitversion.ps1
$gitVersionJson = dotnet gitversion /output json $By = [System.Text.Encoding]::Unicode.GetBytes($gitVersionJson) $output =[Convert]::ToBase64String($By) "using System; using System.Collections.Generic; using System.Text; using System.Text.Json; class GitVersion { private static Dictionary<string, object> _values; private static Dictionary<string, object> Values { get { if (_values == null) { byte[] data = Convert.FromBase64String(""$output""); string decodedString = Encoding.Unicode.GetString(data); _values = JsonSerializer.Deserialize<Dictionary<string, object>>(decodedString); } return _values; } } public static object MajorMinorPatch { get { return Values[""MajorMinorPatch""]; } } } " | Out-File GitVersion.cs "Generated GitVersion.cs" | Write-Output
然后,作为预构建事件,我在Build设置中添加了以下内容:
powershell -ExecutionPolicy Bypass -NoProfile -NonInteractive -File "$(ProjectDir)gitversion.ps1"
或者在myproject.csproj中:
myproject.csproj
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"> <Exec Command="powershell -ExecutionPolicy Bypass -NoProfile -NonInteractive -File "$(ProjectDir)gitversion.ps1" " /> </Target>
这将创建一个GitVersion类,可以在代码中使用:
Console.WriteLine(GitVersion.MajorMinorPatch);
1条答案
按热度按时间fnx2tebb1#
我使用PowerShell脚本和预构建事件的组合得到了它:
脚本如下(在项目目录中保存为
gitversion.ps1
:然后,作为预构建事件,我在Build设置中添加了以下内容:
或者在
myproject.csproj
中:这将创建一个
GitVersion
类,可以在代码中使用: