Проверка версии сборки в.Net
Я пытаюсь полностью разобраться в версиях сборки и строгих именах в.NET
Я нашел эту статью о версиях сборки, в которой говорится, что для сопоставления версий используется только Major.Minor.Build. Я не могу найти ничего, что может подтвердить / опровергнуть это.
Формат версии сборки... Редакция:
Сборки с одинаковыми именами, номерами старших и младших версий, но разными ревизиями предназначены для полной взаимозаменяемости. Это было бы целесообразно исправить дыру в безопасности в ранее выпущенной сборке.
Статьи MS говорят такие вещи, как:
Номер версии сборки является частью идентификатора сборки и играет ключевую роль в привязке к сборке и в политике версий... Проверка версий происходит только со сборками со строгими именами.
Означает ли это, что, скажем, 1.0.0.0 и 1.0.0.1 являются взаимозаменяемыми в среде строгих имен, а 1.0.1.1 - нет?
Каков окончательный ответ, пожалуйста?
2 ответа
Я не нашел ничего в связанной статье, утверждающей, что в сопоставлении версий используется только Major.Minor.Build. Фактически используются все четыре компонента версии.
Ключевым моментом является intended to be interchangeable
, Являются ли они на самом деле взаимозаменяемыми, зависит от автора, который может уважать или игнорировать рекомендации MS.
Поставщик общей сборки, установленной в GAC, может предоставить файл политики издателя для перенаправления со старой версии на новую версию сборки. Он должен делать это только в том случае, если новая версия обратно совместима со старой.
Сборка AssemblyVersion
-атрибут оценивается полностью при сравнении версий. Это означает, что изменение одной части номера версии приведет к несовпадению сборок.
Один из способов обойти это - позволить AssemblyVersion
-атрибут всегда неизменен, например, установлен в [AssemblyVersion("1.2.3.0")]
и использовать AssemblyFileVersion
-атрибут для изменения версий, таких как ревизии, например [AssemblyFileVersion("1.2.3.20120909")]
, Это дает вам возможность обновить версию сборки со строгим именем без обновления всех ссылок.