不知道我在哪里找到的。但我在互联网上的“某处”找到了这个。
这会在构建发生之前更新所有 AssemblyInfo.cs 文件。
像魅力一样工作。我所有的 exe 和 dll 都显示为 1.2.3.333(如果“333”是当时的 SVN 修订版。)(并且 AssemblyInfo.cs 文件中的原始版本被列为“1.2.3.0”)
$(ProjectDir)(我的 .sln 文件所在的位置)
$(SVNToolPath)(指向 svn.exe)
是我的自定义变量,它们的声明/定义未在下面定义。
http://msbuildtasks.tigris.org/
和/或
https://github.com/loresoft/msbuildtasks
有( FileUpdate 和 SvnVersion )任务。
<Target Name="SubVersionBeforeBuildVersionTagItUp">
<ItemGroup>
<AssemblyInfoFiles Include="$(ProjectDir)\**\*AssemblyInfo.cs" />
</ItemGroup>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)">
<Output TaskParameter="Revision" PropertyName="MySubVersionRevision" />
</SvnVersion>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$1.$2.$3.$(MySubVersionRevision)" />
</Target>
编辑 ---------------------------------- ----
在您的 SVN 修订号达到 65534 或更高版本后,上述操作可能会开始失败。
见:
Turn off warning CS1607
这是解决方法。
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="AssemblyFileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="AssemblyFileVersion("$1.$2.$3.$(SubVersionRevision)" />
这样的结果应该是:
在 Windows/Explorer//文件/属性中…….
程序集版本将为 1.0.0.0。
如果 333 是 SVN 修订版,则文件版本将为 1.0.0.333。