AssemblyInfo.cs应该放在版本控制中吗?

时间:2009-06-10 21:41:24

标签: svn version-control cruisecontrol.net assemblyinfo

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

所以一切都是对齐的   - CCNet Build标签
  - 可执行(装配信息)
  - 版本控制(subverson标签)

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

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

谢谢, 利安

4 个答案:

答案 0 :(得分:7)

要么根本不对AssemblyInfo.cs进行版本化,要么将它们的“开发者版本”放入存储库并让CruiseControl.Net在构建之后将它们还原(我会在以后执行以便在开发人员工作站上进行构建很容易可以从CruiseControl.Net下载的“官方”版本中删除。

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

答案 1 :(得分:7)

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

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

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

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

答案 2 :(得分:2)

我总是检查它。实际上我相信这是Team System Source Control的默认行为。

答案 3 :(得分:1)

我们有一个MSBuild脚本,可以在构建之前生成所有必需的AssemblyInfo.cs文件。这样我也可以在汇编版本中使用SVN版本号。 AssemblyInfo.cs文件不会被检入SVN(它们被忽略,因此它们不会打扰人们),而是在构建之前生成(无论是自动构建脚本还是来自VS)。

我还提供了一个批处理文件来处理AssemblyInfo.cs文件的生成,这样开发人员就不需要费心了。