20

我有一个使用 CruiseControl 的自动构建系统。我正在使用 SvnRevisionLabeller 来获取要使用的版本字符串。有了这个字符串,我可以使用 nant 来更新 AssemblyInfo.cs,这样当我构建它时,它就有了正确的构建字符串。我也可以使用这个 CC 标签来标记 subversion 存储库。

所以一切都对齐了
- CCNet 构建标签
- 可执行文件(程序集信息)
- 版本控制(subverson 标签)

现在我遇到的问题是,如果我想尝试从存储库中重建旧图像。由于 AssemblyInfo.cs 不受版本控制,而是一个生成的文件,因此当我现在尝试构建时,版本控制信息将与使用 CruiseControl 构建此版本的存储库时不同。我希望能够生成完全相同的图像,无论它是在 CC 构建期间还是在以后从 Subversion 签出时构建的。

我知道通常不建议这样做,但是我是否应该在每次构建后签入 assemblyInfo.cs 文件,以便在随后从 svn checkout 构建时使用正确的版本信息?

谢谢,利亚姆

4

4 回答 4

7

要么根本不版本 AssemblyInfo.cs,要么将它们的“开发者版本”放入存储库并在构建后让 CruiseControl.Net svn-revert 它们(我这样做是为了让在开发者工作站上进行的构建很容易从“官方”从 CruiseControl.Net 下载)。

至于稍后复制相同的构建标签 - 您已经必须通过手动调用 MSBuild / NAnt 来进行重建,只需将 CCNetLabel 设置为适当的值传递给它,您将获得与从 CruiseControl 调用的构建相同的程序集版本.Net(MSBuild:/p:CCNetLabel=1.4.2.333,NAnt:)-D:CCNetLabel=1.4.2.333

于 2009-06-12T11:11:57.343 回答
7

我使用了一个 CommonAssemblyInfo.cs 文件,我在每个项目中都添加了一个链接。

我在此文件中拥有的唯一属性是 AssemblyFileVersion,并且 CC.Net / Msbuild 每次构建都会更新版本。

确保任何包含 CommonAssemblyInfo.cs 的项目在 AssemblyInfo.cs 中没有重复的属性。

如果您查看 CC.Net 源代码,您会看到它们是如何构建配置的。

于 2009-07-24T19:38:02.040 回答
2

我总是将其签入。事实上,我相信这是 Team System Source Control 的默认行为。

于 2009-06-10T21:46:45.050 回答
1

我们有一个 MSBuild 脚本,它在构建之前生成所有需要的 AssemblyInfo.cs 文件。这样我也可以在程序集版本中使用 SVN 修订号。AssemblyInfo.cs 文件未检入 SVN(它们被忽略,以免打扰人们),而是在构建之前生成(无论是自动构建脚本还是来自 VS)。

我还提供了一个批处理文件来处理 AssemblyInfo.cs 文件的生成,这样开发人员就无需为细节而烦恼。

于 2009-12-18T16:18:36.133 回答