Gendarme имеет AvoidAssemblyVersionMismatchRule
со следующим описанием:
Это правило проверяет соответствие
[AssemblyVersion]
[AssemblyFileVersion]
, если оба присутствуют в сборке. Наличие разных номеров версий в обоих атрибутах может привести к путанице после развертывания приложения.
Например, это правило будет предупреждать о Microsoft System.dll
, который имеет следующие атрибуты:
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.50727.3053")]
Я не согласен с правилом Жандарма. Следуя ему, вы не сможете использовать схему управления версиями, подобную той, что используется Microsoft, т.е.
- обновлять
AssemblyFileVersion
при каждой сборке, - изменение
AssemblyVersion
только в общедоступном интерфейсе или иные серьезные изменения, - убедитесь, что
AssemblyVersion
иAssemblyFileVersion
имеют общий префикс,
и я думаю, что эта схема управления версиями является причиной того, что в первую очередь стало возможным различать AssemblyVersion
и AssemblyFileVersion
.
Я не могу придумать причину, по которой принудительное равенство обоих атрибутов сборки является хорошей практикой, но, возможно, вы можете! Мне было бы интересно узнать ваше мнение.
Если действительно нет веской причины, я скоро предложу разработчикам Жандарма изменить правило на
Это правило проверяет, что
[AssemblyVersion]
и[AssemblyFileVersion]
иметь общий непустой префикс< /strong>, когда оба присутствуют в сборке.