如何让GitVersion / UpdateAssemblyInfo在ASP.NET Core 2.0项目中工作?

8
我们已经使用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/,并尝试运行。
gitversion.exe /UpdateAssemblyInfo MyProjectName.AssemblyInfo.cs /EnsureAssemblyInfo 

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

我必须假设在Bamboo和.NET Core 2.0中使用GitVersion必须有一个解决方案,但我很难找到一个。

有任何想法吗?


1
正在开发中:https://github.com/GitTools/GitVersion/issues/1388 - Marc LaFleur
2个回答

4
最新的GitVersion版本提供了/updateprojectfiles开关,可以递归更新Sdk-style .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>

1
这是正确的方式,非常感谢您发布这个! - TWilly

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

这个方法可以在构建过程中设置程序集版本。在我的Bamboo构建服务器上,我可以用${bamboo.BuildNumber}变量替换版本序列中的最后一个值,即AssemblyVersion=1.2.3.${bamboo.BuildNumber}。谢谢。 - whiskytangofoxtrot
1
我需要在 AzDO Pipeline 中使用这些参数来运行 dotnet publish,因为 build 步骤只是构建解决方案中的项目,而 publish 实际上生成了构件。 - Mihir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接