在我的工作中,源代码管理中每个项目的程序集版本保持为1.0.0.0。当构建机器进行新的每日构建时,它有一个更新程序集版本但不检入更新的assemblyinfo.cs的任务。所以在我们的开发机器上,我们正在编译的dll的汇编版本总是设置为1.0.0.0。
最佳做法是在源代码管理中保持程序集版本是最新的还是我们已经做了正确的事情?
每种可能性的优点和缺点是什么?
由于
答案 0 :(得分:3)
骗局:
顺便说一句,有一种更简单的方法可以确保所有程序集版本都同步:在顶级程序集中的公共类VersionMask
中定义公共const字符串“VersionInfo
”由所有其他程序集引用并放入
[assembly: AssemblyVersion(VersionInfo.VersionMask)]
在每个AssemblyInfo.cs文件中(如果您使用C#),对于VB.NET,它是
<Assembly: AssemblyVersion(VersionInfo.VersionMask)>
答案 1 :(得分:2)
这不正确,您不应自动更新[AssemblyVersion]。当CLR正在寻找要加载的正确版本的程序集时,该属性在程序集解析过程中起着非常重要的作用。虽然当程序集存储在GAC中时,这只是区别对待。优选地,只有当开发人员在程序集的公共接口中进行重大更改时才应更改它,这将使其在应用程序中无法使用,否则不会使用更新的引用程序集重新编译。
您可以随时更新[AssemblyFileVersion]。当您查看“版本”属性选项卡时,这也是在资源管理器中可见的版本。现在你也不再关心文件的签入了。
为了进行比较,使用.NET 2.0到.NET 3.5 SP1的.NET程序集完成了同样的事情。所有标准程序集都保留在程序集版本2.0.0.0,文件版本已更改数千次。然而,这些变化总是兼容的是一个非常难以遵循的行为。
答案 2 :(得分:0)
我的方法一直是,你应该能够通过访问源代码控制系统来构建这个东西。因此,如果更新assemblyinfo.cs的脚本在源代码管理中,那么没问题。
答案 3 :(得分:0)
我想最好将版本存储在assemblyinfo.cs中,这样任何人都可以签出并构建正确的版本。 Dev env上的汇编版本相同。调试特定版本时也会产生问题。 .NET程序集版本也很重要,如果没有正确的版本dll,程序集将无法加载,这也将帮助您进行调试。