5

我们已经使用 Bamboo 构建服务器一段时间了,并且我们安装了 GitVersion,因此可以将其选为构建计划中的任务。我们通常在运行任务时使用 /UpdateAssembleInfo 参数。对于 .NET Framework 项目,这将使用竹版本控制设置更新源中的 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/并尝试运行

gitversion.exe /UpdateAssemblyInfo MyProjectName.AssemblyInfo.cs /EnsureAssemblyInfo 

其中 MyProjectName 表示 .NET Core 2.0 ..\\obj\release\netcoreapp2.0 文件夹中的 assemblyinfo.cs 文件的实际项目名称后缀。但它没有更新该文件。

我不得不假设必须有一个将 GitVersion 与 Bamboo 和 .NET Core 2.0 一起使用的解决方案,但我很难找到一个解决方案。

有任何想法吗?

4

2 回答 2

3

作为一种解决方法,您可以考虑将程序集信息指定为项目属性.csproj

<PropertyGroup>
    <Version>1.2.3.4</Version>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    ...
</PropertyGroup>

然后在dotnet build. 除了它的选项之外,该dotnet build命令还接受MSBuild 选项,例如/property

/property:name=value
/p:name=value
设置或覆盖指定的项目级属性,其中name是属性名称,value是属性值。分别指定每个属性,或使用分号或逗号分隔多个属性。

所以你的构建命令将类似于

dotnet build /p:Version=1.2.3.4;AssemblyVersion=1.2.3.4
于 2018-04-24T06:41:16.020 回答
2

最新版本的 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>
于 2021-09-17T17:11:48.157 回答