使用 DotNet (Core/Standrad) 我如何在构建时获取项目版本?
With DotNet (Core/Standrad) how do I the project version at build time?
我可以通过将标记添加到 .csproj 文件来设置项目版本,
但我想在管道内以编程方式更改该值。
我编写了一个脚本来实现这一点,但感觉很草率。
这一定是一种通过 CLI 执行此操作的方法,但我只是没有找到它。
是否有类似的命令被我忽略了?
dotnet build -project-version 1.2.3
如果不存在命令,您如何设置管道中的项目构建版本?
我在我的管道中使用以下内容。
dotnet build -p:VersionPrefix="$(buildNumber)" -p:VersionSuffix="$(buildPipline)"
在我的 csproj 文件中我有
<PropertyGroup>
...
<VersionPrefix>1.0.1</VersionPrefix>
<VersionSuffix>local</VersionSuffix>
</PropertyGroup>
要在代码中获取版本号,我使用以下代码
public static string Version => System.Reflection.Assembly.GetEntryAssembly().GetCustomAttribute<System.Reflection.AssemblyInformationalVersionAttribute>().InformationalVersion;
如果您使用的是 Azure 管道,您可以添加一个 powershell 脚本,它根据日期和时间声明版本。
Write-Host "Generating Build Number"
$baseDate = [datetime]"01/01/2019"
$currentDate = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId((Get-Date), 'Eastern Standard Time')
$interval = NEW-TIMESPAN –Start $baseDate –End $currentDate
$days = $interval.Days
$hour = $currentDate.ToString("HH")
$minute = $currentDate.ToString("mm")
$version = "1.0.$days.$hour$minute"
$version_npm = "1.$days.$($currentDate.ToString("Hmm"))"
if($currentDate.ToString("HH") -eq "00")
{
$version_npm = "1.$days.25$($currentDate.ToString("mm"))"
}
Write-Host "Version: $version"
Write-Host "npm Version: $version_npm"
Write-Host "##vso[task.setvariable variable=buildNumber]$version"
Write-Host "##vso[task.setvariable variable=buildNumber_npm]$version_npm"
您可以尝试 Assembly Info 扩展,它可以更新项目 AssemblyInfo
文件和 .Net Core / .Net Standard 项目文件 .csproj
。有关如何配置扩展的详细说明,请参阅以下 link:
https://github.com/BMuuN/vsts-assemblyinfo-task/wiki/Versioning
我发现最简单的方法是在 .csproj 文件中使用环境变量,如下所示:
<PropertyGroup Condition="'$(APPVERSION)' != ''">
<InformationalVersion>$(APPVERSION)</InformationalVersion>
</PropertyGroup>
然后在构建服务器中设置环境变量。
我可以通过将标记添加到 .csproj 文件来设置项目版本, 但我想在管道内以编程方式更改该值。
我编写了一个脚本来实现这一点,但感觉很草率。
这一定是一种通过 CLI 执行此操作的方法,但我只是没有找到它。
是否有类似的命令被我忽略了?
dotnet build -project-version 1.2.3
如果不存在命令,您如何设置管道中的项目构建版本?
我在我的管道中使用以下内容。
dotnet build -p:VersionPrefix="$(buildNumber)" -p:VersionSuffix="$(buildPipline)"
在我的 csproj 文件中我有
<PropertyGroup>
...
<VersionPrefix>1.0.1</VersionPrefix>
<VersionSuffix>local</VersionSuffix>
</PropertyGroup>
要在代码中获取版本号,我使用以下代码
public static string Version => System.Reflection.Assembly.GetEntryAssembly().GetCustomAttribute<System.Reflection.AssemblyInformationalVersionAttribute>().InformationalVersion;
如果您使用的是 Azure 管道,您可以添加一个 powershell 脚本,它根据日期和时间声明版本。
Write-Host "Generating Build Number"
$baseDate = [datetime]"01/01/2019"
$currentDate = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId((Get-Date), 'Eastern Standard Time')
$interval = NEW-TIMESPAN –Start $baseDate –End $currentDate
$days = $interval.Days
$hour = $currentDate.ToString("HH")
$minute = $currentDate.ToString("mm")
$version = "1.0.$days.$hour$minute"
$version_npm = "1.$days.$($currentDate.ToString("Hmm"))"
if($currentDate.ToString("HH") -eq "00")
{
$version_npm = "1.$days.25$($currentDate.ToString("mm"))"
}
Write-Host "Version: $version"
Write-Host "npm Version: $version_npm"
Write-Host "##vso[task.setvariable variable=buildNumber]$version"
Write-Host "##vso[task.setvariable variable=buildNumber_npm]$version_npm"
您可以尝试 Assembly Info 扩展,它可以更新项目 AssemblyInfo
文件和 .Net Core / .Net Standard 项目文件 .csproj
。有关如何配置扩展的详细说明,请参阅以下 link:
https://github.com/BMuuN/vsts-assemblyinfo-task/wiki/Versioning
我发现最简单的方法是在 .csproj 文件中使用环境变量,如下所示:
<PropertyGroup Condition="'$(APPVERSION)' != ''">
<InformationalVersion>$(APPVERSION)</InformationalVersion>
</PropertyGroup>
然后在构建服务器中设置环境变量。