我希望使用MSBuild社区任务中的VersionTask来设置修订版本计算类型。但是,我很难理解如何在我的csproj文件中实际连接该任务。
该项目有一个AssemblyInfo.cs文件,其中定义了以下属性:
实际任务随后按如下方式调用:
我看到因为 Message 任务,目标 BeforeBuild 被调用,但是 exe 文件仍然具有标准生成的编号,如下所示:文件版本:3.2.5.27547。
我期望看到类似于 3.2.5.111 的内容(作为 MSBuild 参数传递的构建号)。
由于 Version 任务正在覆盖 Revision 的“*”值的默认处理,我认为实际上不需要修改 AssemblyInfo.cs 文件。
我需要将 Version 任务的输出值传递到一个 MSBuild 参数中吗?我是否需要使用 AssemblyVersion 任务来更新文件中的值?
显然,我试图避免改变 AssemblyInfo.cs,我只想覆盖版本号处理。请有人给予建议吗?
编辑:我刚在安装程序的 chm 文件中发现了以下使用示例,这在一定程度上回答了我的问题。
该项目有一个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>
我看到因为 Message 任务,目标 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文件仍然具有之前的默认修订版本。