如何让 GitVersion /UpdateAssemblyInfo 与 ASP.NET Core 2.0 项目一起工作
How can I get GitVersion /UpdateAssemblyInfo to work with ASP.NET Core 2.0 project
我们使用 Bamboo 构建服务器已有一段时间了,我们安装了 GitVersion,因此可以将其选为构建计划中的任务。我们通常在 运行 任务时使用 /UpdateAssembleInfo 参数。对于 .NET Framework 项目,这将使用 bamboo 版本控制设置更新源中的 assemblyinfo 文件,以便 .NET 程序集具有与我们的 Bamboo 构建和后续 Bamboo 部署相同的版本信息,从而让我们知道已部署项目的版本通过检查程序集文件属性来检查该字段。这一切都运作良好。
但是,我们现在正在构建和部署 .NET Core 2.0 解决方案,并且发现 GitVersion /UpdateAssemblyInfo 无法正常工作。
我搜索了 .NET Core 的修复程序,但只能找到涉及使用 project.json 文件的解决方案,该文件不再与 .NET Core 2.0 一起使用(它更改为 *.csproj文件)。
我查看了 http://gitversion.readthedocs.io/en/latest/usage/command-line/ 我尝试了 运行ning
gitversion.exe /UpdateAssemblyInfo MyProjectName.AssemblyInfo.cs /EnsureAssemblyInfo
其中 MyProjectName 代表 .NET Core 2.0 ..\\obj\release\netcoreapp2.0 文件夹中 assemblyinfo.cs 文件的实际项目名称后缀。但它没有更新该文件。
我不得不假设必须有一个将 GitVersion 与 Bamboo and.NET Core 2.0 一起使用的解决方案,但我很难找到一个。
有什么想法吗?
作为解决方法,您可以考虑 in .csproj
<PropertyGroup>
<Version>1.2.3.4</Version>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
...
</PropertyGroup>
然后在 dotnet build
期间设置值。除了它的选项之外,dotnet build
命令接受 MSBuild options 就像 /property
/property:name=value
/p:name=value
Set or override the specified project-level properties, where name
is the property name and value
is the property value. Specify each property separately, or use a semicolon or comma to separate multiple properties.
因此您的构建命令将类似于
dotnet build /p:Version=1.2.3.4;AssemblyVersion=1.2.3.4
最新版本的GitVersion提供了/updateprojectfiles
开关来递归更新Sdk风格的.csproj/.vbproj/.fsproj中的版本信息。
来自GitVersion/Usage/CommandLine/Arguments:
/updateprojectfiles
Will recursively search for all project files
(.csproj/.vbproj/.fsproj) files in the git repo and update them
Note: This is only compatible with the newer Sdk projects
它会生成所需的属性,即使它们不存在于项目文件中,也会产生以下属性:
<Project>
<PropertyGroup>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<InformationalVersion>1.0.0-versionNumber.N+Branch.branchName.Sha.commitId</InformationalVersion>
<Version>1.0.0-versionNumberNNNN</Version>
</PropertyGroup>
我们使用 Bamboo 构建服务器已有一段时间了,我们安装了 GitVersion,因此可以将其选为构建计划中的任务。我们通常在 运行 任务时使用 /UpdateAssembleInfo 参数。对于 .NET Framework 项目,这将使用 bamboo 版本控制设置更新源中的 assemblyinfo 文件,以便 .NET 程序集具有与我们的 Bamboo 构建和后续 Bamboo 部署相同的版本信息,从而让我们知道已部署项目的版本通过检查程序集文件属性来检查该字段。这一切都运作良好。
但是,我们现在正在构建和部署 .NET Core 2.0 解决方案,并且发现 GitVersion /UpdateAssemblyInfo 无法正常工作。
我搜索了 .NET Core 的修复程序,但只能找到涉及使用 project.json 文件的解决方案,该文件不再与 .NET Core 2.0 一起使用(它更改为 *.csproj文件)。
我查看了 http://gitversion.readthedocs.io/en/latest/usage/command-line/ 我尝试了 运行ning
gitversion.exe /UpdateAssemblyInfo MyProjectName.AssemblyInfo.cs /EnsureAssemblyInfo
其中 MyProjectName 代表 .NET Core 2.0 ..\\obj\release\netcoreapp2.0 文件夹中 assemblyinfo.cs 文件的实际项目名称后缀。但它没有更新该文件。
我不得不假设必须有一个将 GitVersion 与 Bamboo and.NET Core 2.0 一起使用的解决方案,但我很难找到一个。
有什么想法吗?
作为解决方法,您可以考虑 .csproj
<PropertyGroup>
<Version>1.2.3.4</Version>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
...
</PropertyGroup>
然后在 dotnet build
期间设置值。除了它的选项之外,dotnet build
命令接受 MSBuild options 就像 /property
/property:name=value
/p:name=value
Set or override the specified project-level properties, wherename
is the property name andvalue
is the property value. Specify each property separately, or use a semicolon or comma to separate multiple properties.
因此您的构建命令将类似于
dotnet build /p:Version=1.2.3.4;AssemblyVersion=1.2.3.4
最新版本的GitVersion提供了/updateprojectfiles
开关来递归更新Sdk风格的.csproj/.vbproj/.fsproj中的版本信息。
来自GitVersion/Usage/CommandLine/Arguments:
/updateprojectfiles
Will recursively search for all project files
(.csproj/.vbproj/.fsproj) files in the git repo and update them
Note: This is only compatible with the newer Sdk projects
它会生成所需的属性,即使它们不存在于项目文件中,也会产生以下属性:
<Project>
<PropertyGroup>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<InformationalVersion>1.0.0-versionNumber.N+Branch.branchName.Sha.commitId</InformationalVersion>
<Version>1.0.0-versionNumberNNNN</Version>
</PropertyGroup>