2009-06-10 45 views
18

我有一个使用CruiseControl的自动化构建系统。我正在使用SvnRevisionLabeller来获取要使用的版本字符串。有了这个字符串,我可以使用nant来更新AssemblyInfo.cs,所以当我构建它时有正确的构建字符串。我也可以使用这个CC标签来标记Subversion版本库。AssemblyInfo.cs应该放置在版本控制中吗?

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

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

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

感谢, 利亚姆

回答

2

我总是有它的检查。事实上,我相信这是团队系统源代码控制的默认行为。

+0

我使用的是Subversion和CrusieControl.NET。我使用NAnt脚本构建。我读过的是AssemblyInfo.cs是在构建过程中生成的输出。所以构建顺序是: - CCNET(SVN触发由登记入住@say存储库版本100) 楠称为是afgter构建 我现在办理登机手续的AssemblyInfo.cs创建 的MSBuild叫 的AssemblyInfo.cs ?如果签到,版本库将在版本101.所以我的目标是使AssemblyInfo.cs与构建版本匹配不符合。我该怎么做呢? – 2009-06-11 21:59:35

7

要么根本没有AssemblyInfo.cs的版本,要么把它们的“开发版本”放到版本库中,让CruiseControl.Net在版本建立之后svn-恢复它们(我做了后面的版本,这样开发者工作站上的版本是从CruiseControl.Net下载的“官方”软件很容易关闭)。

对于以后再生成相同的构建标签 - 您必须手动调用MSBuild/NAnt来重建,只需传递给它CCNetLabel设置为合适的值,您将获得与生成相同的程序集版本构建从CruiseControl.Net调用(MSBuild:/p:CCNetLabel=1.4.2.333,NAnt:-D:CCNetLabel=1.4.2.333)。

7

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

我在这个文件中唯一的属性是AssemblyFileVersion并且CC.Net/Msbuild更新每个版本的版本。

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

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

0

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

我还提供了一个批处理文件来照顾AssemblyInfo.cs文件的生成,以便开发人员不需要打扰细节。

相关问题