讓 AssemblyVersion 和 AssemblyFileVersion 匹配是否有充分的理由?
憲兵有
AvoidAssemblyVersionMismatchRule以下描述:此規則檢查當兩者都存在於程序集中時是否
[AssemblyVersion]匹配。[AssemblyFileVersion]部署應用程序後,兩個屬性中的版本號不同可能會造成混淆。例如,此規則將對
System.dll具有以下屬性的 Microsoft 發出警告:[assembly: AssemblyVersion("2.0.0.0")] [assembly: AssemblyFileVersion("2.0.50727.3053")]**我不同意憲兵的規定。**遵循它將使您無法使用類似於 Microsoft 使用的版本控制方案,即
- 每個版本的更新
AssemblyFileVersion,- 僅在公共界面上更改
AssemblyVersion或其他重大更改,- 確保
AssemblyVersion並AssemblyFileVersion共享一個共同的前綴,而且我認為這種版本控制方案是設計原因,它可以首先區分
AssemblyVersion和AssemblyFileVersion。我想不出為什麼強制兩個程序集屬性相等是一個好習慣的原因,但也許你可以!我會對你的意見感興趣。
如果確實沒有充分的理由,我會很快建議憲兵開發人員將規則更改為
當兩者都存在於程序集中時,此規則檢查
[AssemblyVersion]和是否具有公共的非空前綴。[AssemblyFileVersion]
同意,如果它們應該匹配,那麼一開始就不需要兩個不同的屬性!但正如規則所說:這可能會令人困惑。
AssemblyVersion 更像是“整個應用程序的版本”,而 FileVersion 是單個文件的版本。如果您的應用程序有多個具有不同更新周期的程序集,無論出於何種原因(例如,單獨更新但需要主應用程序的特定主要版本的外掛),那麼您可以為每個程序集賦予不同的 FileVersion 但具有共同的 AssemblyVersion。
此外,有時,更新 AssemblyVersion 確實很不方便(例如,SharePoint 工作流和 Web 元件是要更新的 PITA,因為它們需要指定的 AssemblyVersion),因此 FileVersion 通常用作實際版本。