我正在尝试在编译项目之前自动更新 .csproj 文件中的版本元素,以便输出的 dll 具有该版本号。
我的要求:
我有以下内容:
<PropertyGroup>
<VersionPrefix>1.0.20</VersionPrefix>
<VersionSuffix>03412bb</VersionSuffix>
</PropertyGroup>
<Target Name="ReleaseVersion" Condition="'$(Configuration)' == 'Release'" BeforeTargets="BeforeBuild">
<Exec Command="{snip of command that updates/saves VersionPrefix/Suffix of this file}" />
</Target>
是否有更好的目标可用于 BeforeTargets
值?有没有办法可以执行命令来返回信息,然后设置一个变量供 msbuild 在设置生成的 dll 的
Product version
属性时使用?
Setting the version number for .NET Core Projects. 的评论。
我真正想做的就是通过VersionSuffix
将当前的 git 提交哈希附加到文件版本的末尾。在 dotnet cli 中使用
/p:InformationalVersion="1.2.3-qa"
有两个直接问题(可以克服)
在我的“发布”任务中,我
第一个调用我的“可执行文件”,它将检测当前项目的当前提交及其所有依赖项(如果在暂存文件或工作目录中执行文件,则显然会落后一个)。然后,我使用最新的提交哈希生成/更新每个 Directory.Build.props(位于与 *.csproj 相同的文件夹中)。
生成的Directory.Build.props
文件显示如下。
<Project>
<PropertyGroup>
<VersionSuffix>919022d</VersionSuffix>
</PropertyGroup>
</Project>
由于我每次发布时都会生成/更新此文件,并且它有点像不需要在存储库中跟踪的“代码生成”文件,因此我将此文件添加到 .gitignore
文件中,以便当我这样做时发布,如果生成/更新了任何 Directory.Build.props 文件,则不需要新的提交。