gpt4 book ai didi

.net - 如何正确使用 MSBuild 社区任务库在 .NET dll 上设置 SVN 版本号

转载 作者:行者123 更新时间:2023-12-04 20:20:24 31 4
gpt4 key购买 nike

我正在使用 MSBuild Community Task library获取当前的 SVN 版本,在我的 AssemblyInfo 文件中设置一个集合,以获取最终编译的 dll 中的修订版。

如您所知,SVN 版本可以是“28”或“28M”——如果有修改的话。如果我执行 MSBuild 消息并输出 Revision 属性,我会看到修改后得到 28M,但是在更新 AsseblyInfo 时,我一直只得到 28 的版本号..?

我想在版本号中使用 28M 来表示 dll 是使用非 checkin 修改构建的。我怎样才能让它工作?

<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);" />

最佳答案

.Net 程序集版本号是严格键入的。它们不仅仅是任何字符串,而是 ushorts,这意味着它们的最大值为 65535(参见文档 http://msdn.microsoft.com/en-us/library/cbf1574z.aspx)。如果您使用 svn 修订版(就像我曾经做过的那样),一旦超过该魔数(Magic Number),您的构建就会中断。

我还使用了一种表明开发人员构建与 CI 构建的方案是使用 {year}.{month}.{day}.{build} 形式的版本。其中构建号是用额外的构建参数指定的。这为我们提供了构建日期,并指示它是否是开发人员构建(即最后一个组件为零)

关于.net - 如何正确使用 MSBuild 社区任务库在 .NET dll 上设置 SVN 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159808/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com