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

问题描述 投票:0回答:4

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

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

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

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

谢谢, 利亚姆

svn version-control cruisecontrol.net assemblyinfo
4个回答
7
投票

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

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

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

如果您查看 CC.Net 源代码,您会发现这就是他们的构建配置方式。


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
)。


2
投票

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


1
投票

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

我还提供了一个批处理文件来处理 AssemblyInfo.cs 文件的生成,以便开发人员无需担心细节。

© www.soinside.com 2019 - 2024. All rights reserved.