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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

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

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

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

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

提问于
用户回答回答于

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

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

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

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

用户回答回答于

要么完全没有版本的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

扫码关注云+社区