【发布时间】:2011-08-23 10:44:03
【问题描述】:
我正在使用MSBuild Community Task library 获取当前 SVN 版本的集合,该集合在我的 AssemblyInfo 文件中以获取最终编译的 dll 中的修订。
如您所知,SVN 版本可能类似于“28”或“28M”——如果有修改的话。如果我执行 MSBuild 消息并输出 Revision 属性,我看到修改后我得到了 28M,但是在更新 AsseblyInfo 时,我一直在版本号中只得到 28 ..?
我想在版本号中有 28M 以表明 dll 是使用非签入修改构建的。我怎样才能让它发挥作用?
<Target Name="Compile">
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SvnTool)">
<Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>
<ItemGroup>
<AssemblyInfoFiles Include="x.a\Properties\AssemblyInfo.cs" />
<AssemblyInfoFiles Include="x.b\Properties\AssemblyInfo.cs" />
</ItemGroup>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$(MajorVersion).$(MinorVersion).$(Revision).0" />
<MSBuild Projects="$(MSBuildProjectDirectory)\ConfigExplorer.sln" Targets="Rebuild" Properties="Configuration=$(BuildType);" />
【问题讨论】:
-
您不能将 28M 作为修订号,因为修订在版本类中声明为
int:public int Revision { get; }。但是您可以使用例如 AssemblyInformationalVersionAttribute 属性来存储您喜欢的任何文本。