Gendarme有一个 AvoidAssemblyVersionMismatchRule
带有以下描述:
This rule checks that the
[AssemblyVersion]
matches the[AssemblyFileVersion]
when both are present inside an assembly. Having different version numbers in both attributes can be confusing once the application is deployed.
例如,此规则会在 Microsoft 的
System.dll
上发出警告。它具有以下属性:[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.50727.3053")]
我不同意宪兵的规定。 遵循它将使您无法使用类似于 Microsoft 使用的版本控制方案,即
AssemblyFileVersion
在每个构建中,AssemblyVersion
仅在公共(public)界面或其他重大更改上,AssemblyVersion
和 AssemblyFileVersion
共享一个公共(public)前缀 而且我认为这种版本控制方案是能够区分
AssemblyVersion
的设计原因。和 AssemblyFileVersion
首先。我想不出为什么强制两个程序集属性相等是一个好习惯的原因,但也许你可以! 我会对你的意见感兴趣。
如果确实没有充分的理由,我会很快建议宪兵开发人员将规则更改为
This rule checks that the
[AssemblyVersion]
and[AssemblyFileVersion]
have a common, non-empty prefix when both are present inside an assembly.
最佳答案
同意,如果它们应该匹配,那么一开始就不需要两个不同的属性!但正如规则所说:这可能会令人困惑。
AssemblyVersion 更像是“整个应用程序的版本”,而 FileVersion 是单个文件的版本。如果您的应用程序具有多个具有不同更新周期的程序集,无论出于何种原因(例如,单独更新但需要主应用程序的特定主要版本的插件),那么您可以为每个程序集赋予不同的 FileVersion,但具有共同的 AssemblyVersion。
此外,有时,更新 AssemblyVersion 确实很不方便(例如,SharePoint 工作流和 Web 部件是要更新的 PITA,因为它们需要指定的 AssemblyVersion),因此 FileVersion 通常用作真实版本。
关于.net - 让 AssemblyVersion 和 AssemblyFileVersion 匹配是否有充分的理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081658/