msbuild - 如何使用 AssemblyInfoTask 更改程序集版本号?

标签 msbuild msbuild-task

我试图自动化为所有 DLL 设置版本的过程,经过一段时间后,我开始了解 AssemblyInfo最有可能实现的任务。

所以我继续安装它,特别是版本 1.0.51130.0 .

安装后,我手动添加了Import AssemblyInfoTask的标签(通过卸载各个项目)在 .cspoj文件(该解决方案有超过 35 个 proj 文件)。

<Import Project="$(MSBuildExtensionsPath)\Microsoft\AssemblyInfoTask\Microsoft.VersionNumber.Targets"/>

接下来我修改了Microsoft.VersionNUmber.Target将安装在路径中的文件:C:\Program Files\MSBuild\Microsoft\AssemblyInfoTask ,我修改了以下部分:
<!-- Properties for controlling the Assembly Version -->
<PropertyGroup>
    <AssemblyMajorVersion>4</AssemblyMajorVersion>
    <AssemblyMinorVersion>0</AssemblyMinorVersion>
    <AssemblyBuildNumber></AssemblyBuildNumber>
    <AssemblyRevision></AssemblyRevision>
    <AssemblyBuildNumberType>DateString</AssemblyBuildNumberType>
    <AssemblyBuildNumberFormat>01MMdd</AssemblyBuildNumberFormat>
    <AssemblyRevisionType>AutoIncrement</AssemblyRevisionType>
    <AssemblyRevisionFormat>00</AssemblyRevisionFormat>
</PropertyGroup>

<!-- Properties for controlling the Assembly File Version -->  
<PropertyGroup>
    <AssemblyFileMajorVersion>4</AssemblyFileMajorVersion>
    <AssemblyFileMinorVersion>0</AssemblyFileMinorVersion>
    <AssemblyFileBuildNumber></AssemblyFileBuildNumber>
    <AssemblyFileRevision></AssemblyFileRevision>
    <AssemblyFileBuildNumberType>DateString</AssemblyFileBuildNumberType>
    <AssemblyFileBuildNumberFormat>01MMdd</AssemblyFileBuildNumberFormat>
    <AssemblyFileRevisionType>AutoIncrement</AssemblyFileRevisionType>
    <AssemblyFileRevisionFormat>00</AssemblyFileRevisionFormat>
</PropertyGroup>

接下来我设置 assemblyInfo.cs文件的版本为 1.0.0.0在每个项目中。最后我保存并关闭它,重新打开解决方案并构建。它就像一个冠军!

现在想要的是自定义版本为4.0.1053.1哪里10是年份指标的一部分,即 2010 和 53表示周数,最后 1表示修订号。

如何使用 AssemblyInfo 实现此目的任务?我看到几个帖子说 AssemblyInfo 的新版本任务在构建扩展包中可用。

我已经安装了 MSBuild 扩展包 2010 年 12 月 它的版本是 MSBuild 扩展包 4.0.2.0 安装程序

最佳答案

首先.. 使用从每个项目链接的 globalassemblyinfo.cs。
将其作为链接文件添加到每个项目。
这意味着您更新一个文件,而不是 30 多个 assemblyinfo 文件...然后:

使用 MSBuild.Community.Tasks ....

然后打电话

<AssemblyInfo CodeLanguage="CS"
         OutputFile="$(VersionFile)"
         AssemblyCompany="Company"
         AssemblyProduct="Product"
         AssemblyCopyright="Copyright © Company 2011"
         ComVisible="false"
         AssemblyVersion="$(BUILD_NUMBER)"
         AssemblyFileVersion="$(BUILD_NUMBER)" />

假设你有类似的东西:
<Import Project=".\tasks\MSBuild.Community.Tasks.Targets"/>

关于msbuild - 如何使用 AssemblyInfoTask 更改程序集版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562845/

相关文章:

c# - csproj 文件中的 FlavorProperties GUID

entity-framework - 抑制 EF 警告的正确方法是什么?

azure - 使用TFS构建服务器但不部署

visual-studio - 如何在 MSBuild 中调用 Web Essentials 任务?

iis - MSBuild 中是否存在为 IIS 中的 Web 应用程序指定启用协议(protocol)的可能性?

VB6 与 MSBuild 的集成

c# - 如何使用 MSBuild 在输出文件夹中自动创建文件夹?

MSBuild 目标和 Visual Studio 2012 问题

msbuild - 你如何编写一个 MSBuild 任务来支持取消?

.net - 使用 MSBuild 脚本运行 MSTest 单元测试