我想使用 MSBuild 社区任务中的 VersionTask 来设置修订计算类型。但是,我很难理解如何在我的 csproj 文件中实际连接任务。
该项目有一个 AssemblyInfo.cs,其中定义了以下属性:
[assembly: AssemblyVersion("3.2.5.*")]
我想要做的是用我自己的自定义处理覆盖修订号处理的生成。
我已将自定义版本任务放入 csproj 文件中,如下所示:
<UsingTask TaskName="MyCo.Build.Tasks.Version" AssemblyFile="$(SolutionDir)\..\Build\.build\MyCo.Build.Tasks.dll" />
然后调用实际任务如下:
<Target Name="BeforeBuild">
<Message Text="Setting Revision Number to $(BuildNumber)" />
<MyCo.Build.Tasks.Version RevisionType="BuildServerNumber" Revision="$(BuildNumber)" /></Target>
我可以看到由于消息任务而调用了目标 BeforeBuild,但 exe 文件仍然具有标准生成的编号,如下所示:文件版本:3.2.5.27547
我期待像 3.2.5.111 之类的东西(作为参数传递给 MSBuild 的内部版本号)。
由于 Version 任务覆盖了 Revision 的“*”值的默认处理,我认为没有必要实际修改 AssemblyInfo.cs 文件。
我是否需要将 Version 任务的输出值传递给 MSBuild 参数?我真的需要使用 AssemblyVersion 任务来更新文件中的值吗?
显然,我试图避免更改 AssemblyInfo.cs,我只想覆盖版本号处理。
有人可以建议吗?
编辑:我刚刚在安装程序的 chm 文件中找到了以下使用示例,它部分回答了我的问题。
<Version BuildType="Automatic" RevisionType="Automatic" Major="1" Minor="3" >
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>
<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
但是,当我运行构建时,我可以在消息任务中输出生成的程序集版本,但 exe 文件仍然像以前一样具有默认修订版