我想使用MSBuild社区任务中的VersionTask来设置Revision计算类型。但是,我很难理解如何在我的csproj文件中实际连接任务。如何在csproj文件中使用Msbuild.Community.Tasks.Version
该项目具有规定的下列属性的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.1 11(作为参数传入MSBuild的内部版本号)。
由于Version任务覆盖默认处理'*'值的版本,我不认为有必要实际修改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文件仍然有默认的修订为之前