我想调整我的类库的TeamCity构建配置的输出,以便生成的dll文件具有以下版本号:3.5.0.x,其中x是TeamCity选择的Subversion修订号。让TeamCity将Subversion版本号集成到程序集版本
我发现我可以使用BUILD_NUMBER
环境变量来获得x,但不幸的是我不明白我还需要做什么。
我发现所有的“教程”都说“你只需将其添加到脚本中”,但他们不会说脚本,而“this”通常指的是MSBuild社区扩展的AssemblyInfo任务。
我需要建立一个自定义的MSBuild脚本以某种方式使用它吗? “脚本”与解决方案文件还是C#项目文件相同?
我对MSBuild过程根本不了解,只是我可以直接将解决方案文件传递给MSBuild,但我需要添加到“脚本”中的是XML,解决方案文件决定不会看起来像XML。
那么,任何人都可以点我一步一步指导如何使这项工作?
这是我结束了:
- 安装MSBuild Community Tasks
编辑我的核心类库的.csproj文件,并更改底部,以便它读取:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> <Target Name="BeforeBuild"> <AssemblyInfo Condition=" '$(BUILD_NUMBER)' != '' " CodeLanguage="CS" OutputFile="$(MSBuildProjectDirectory)\..\GlobalInfo.cs" AssemblyVersion="3.5.0.0" AssemblyFileVersion="$(BUILD_NUMBER)" /> </Target> <Target Name="AfterBuild">
更改我的所有AssemblyInfo.cs文件,以便它们不指定AssemblyVersion或AssemblyFileVersion(回想起来,我将考虑将AssemblyVersion放回)
- 添加了一个链接,指向刚才位于全局的GlobalInfo.cs外的所有项目
- 确保该文件是建立一次,所以,我在源代码控制
现在,这将更新GlobalInfo.cs一个默认的文件只有在环境变量BUILD_NUMBER设置,它是当我通过TeamCity构建时。
我选择保持AssemblyVersion常量,以便引用仍然有效,并且只更新AssemblyFileVersion,以便我可以看到哪个构建dll来自。
不幸的是,他们的补丁并不[当前](http://confluence.jetbrains.net/display/TCD65/AssemblyInfo+Patcher)允许一个指定不同的'AssemblyVersion'和'AssemblyFileVersion'值。 – ladenedge 2011-12-13 17:14:17
您的建议在主要关注的是能够跟踪内部版本号的情况下非常有用:谢谢! – faester 2012-01-18 13:42:38
男人我正在做很多Scheiss样板代码只是为了让我的代码。你救了我2或3天的工作! – 2014-06-05 12:44:49