Che*_*tan 19 msbuild msbuild-task
我正在尝试自动化为所有DLL设置版本的过程,花了一些时间后我才开始了解AssemblyInfo最有可能实现的任务.
所以我继续安装它,特别是版本1.0.51130.0.
安装后,我手动添加的Import标签(通过卸载每个项目)的AssemblyInfoTask在.cspoj文件(该溶液具有大于35个PROJ文件).
<Import Project="$(MSBuildExtensionsPath)\Microsoft\AssemblyInfoTask\Microsoft.VersionNumber.Targets"/>
Run Code Online (Sandbox Code Playgroud)
接下来我修改了Microsoft.VersionNUmber.Target将在path:中安装的文件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>
Run Code Online (Sandbox Code Playgroud)
接下来,我将assemblyInfo.cs文件的版本设置1.0.0.0为每个项目.最后我保存并关闭它,重新打开解决方案并构建.它就像一个冠军!
现在什么要的是定制版本来4.0.1053.1这里10是今年指标是2010年的部分53代表周数,最后1表示版本号.
如何使用AssemblyInfoTask 实现这一目标?我发现了几个帖子,AssemblyInfo在Build Extension Pack中可以使用新版本的Task.
我已经安装了2010年12月的MSBuild扩展包,其版本是MSBuild Extension Pack 4.0.2.0安装程序
Jam*_*den 15
首先..使用从每个项目链接的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)" />
Run Code Online (Sandbox Code Playgroud)
假设你有类似的东西:
<Import Project=".\tasks\MSBuild.Community.Tasks.Targets"/>
Run Code Online (Sandbox Code Playgroud)
bru*_*ton 14
我在Jenkins中通过使用List Subversion Tags参数类型进行参数化的包构建来完成此操作.Subversion标记必须遵循版本号格式(major.minor.revision.build),例如tags/2.0.0.1.然后将标签名称分配给Jenkins参数,例如,$VERSION变为2.0.0.1
我使用WriteLinesToFilemsbuild任务将assembly属性写入第二个文件以及名为VersionInfo.cs的PropertyInfo.cs.在签入源代码控制时,这只包含一个默认版本号:
// Do not change this. The version is set on package builds only by setting the AsmVersion MSBuild property
[assembly: System.Reflection.AssemblyVersion("0.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
构建服务器上的包构建通过AsmVersion参数传递版本:
/p:AsmVersion=$VERSION
Run Code Online (Sandbox Code Playgroud)
.csproj文件被修改为具有BeforeBuild目标(Visual Studio为您创建一个注释掉的):
<Target Name="BeforeBuild">
<WriteLinesToFile
Condition=" '$(AsmVersion)' != '' " File="Properties\VersionInfo.cs"
Overwrite="True"
Lines="[assembly: System.Reflection.AssemblyVersion("$(AsmVersion)")] // Generated by build" />
</Target>
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中构建或不传入AsmVersion时,程序集的默认版本为0.0.0.0.在包构建中构建时,您将获得所需的构建号.
正如 @bruceboughton所建议的,您可以在编译期间轻松生成版本汇编文件,而无需使用MSBuild.Community.Tasks库:
<PropertyGroup>
<Version>0.0.0</Version>
<InformationalVersion>0.0.0-dev~commithash</InformationalVersion>
<VersionFileName>$(BaseIntermediateOutputPath)Version.cs</VersionFileName>
</PropertyGroup>
<Target Name="GenerateVersionFile" BeforeTargets="BeforeBuild">
<WriteLinesToFile
File="$(VersionFileName)"
Overwrite="True"
Lines="
[assembly: System.Reflection.AssemblyVersion("$(Version)")]
[assembly: System.Reflection.AssemblyFileVersion("$(Version)")]
[assembly: System.Reflection.AssemblyInformationalVersion("$(InformationalVersion)")]" />
<ItemGroup>
<Compile Include="$(VersionFileName)" />
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
从 file 中删除您在生成的文件中指定的参数的定义Properties\AssemblyInfo.cs。
之后,您可以通过向 msbuild 添加参数来指定版本:
msbuild /property:Version=1.2.3 /property:InformationalVersion=1.2.3-dev~commithash .\SolutionFile.sln
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38087 次 |
| 最近记录: |