【发布时间】:2011-01-02 22:14:39
【问题描述】:
我想调整我的类库的 TeamCity 构建配置的输出,以便生成的 dll 文件具有以下版本号:3.5.0.x,其中 x 是 TeamCity 获取的 subversion 修订号。
我发现我可以使用BUILD_NUMBER 环境变量来获取x,但不幸的是我不明白我还需要做什么。
我发现所有的“教程”都说“你只需将这个添加到脚本中”,但他们没有说 哪个 脚本,而“这个”通常是指来自MSBuild 社区扩展。
我是否需要以某种方式构建自定义 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 的链接
- 确保此文件只构建一次,以便我在源代码管理中有一个默认文件
现在只有在设置了环境变量 BUILD_NUMBER 时才会更新 GlobalInfo.cs,这就是我通过 TeamCity 构建的时候。
我选择保持 AssemblyVersion 不变,这样引用仍然有效,并且只更新 AssemblyFileVersion,这样我就可以看到 dll 来自哪个构建。
【问题讨论】:
标签: svn msbuild continuous-integration version teamcity