Сведения о вопросе

Oleksandrop

10:39, 20th August, 2020

Теги

.net   attributes   versions    

Как лучше всего использовать версию файла и версию Assembly?

Просмотров: 450   Ответов: 8

В .NET есть два номера версий, доступных при построении проекта, версия файла и версия Assembly. Как вы используете эти цифры? Оставить их прежними? Автоматическое увеличение одного, но ручное изменение другого?

А как насчет атрибута AssemblyInformationalVersion ?

Я нашел эту статью в базе знаний Майкрософт поддержки (KB), которая предоставляла некоторую помощь: как использовать версию Assembly и версию файла Assembly .



  Сведения об ответе

9090

23:58, 8th August, 2020

В решениях с несколькими проектами одна вещь, которую я нашел очень полезной, - это то, что все файлы AssemblyInfo указывают на один проект, который управляет версиями. Так что у моего AssemblyInfos есть линия:

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

У меня есть проект с одним файлом, который объявляет строку:

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

Затем мой автоматизированный процесс сборки просто изменяет эту строку, извлекая самую последнюю версию из базы данных и увеличивая второе последнее число.

Я изменяю только основной номер сборки, когда набор функций резко меняется.

Я вообще не меняю версию файла.


  Сведения об ответе

piter

00:45, 8th August, 2020

В статье KB упоминается самое важное различие: версии файлов используются только для отображения, в то время как версия assembly играет важную роль в поведении загрузки .NET.

Если вы измените номер версии assembly, то идентичность вашего assembly в целом изменится. Разработчикам потребуется выполнить перестройку для ссылки на вашу новую версию (если только вы не установили некоторые функции автоматического управления версиями "policy"), и во время выполнения будут загружаться только сборки с соответствующими номерами версий.

Это важно в моей среде, где нам нужен увеличивающийся, хорошо видимый номер версии для целей аудита, но мы не хотим заставлять разработчиков перестраивать или иметь много версий одновременно в рабочей среде. В этом случае для незначительных изменений с обратной совместимостью мы обновляем версию файла, но не версию assembly.


  Сведения об ответе

FAriza

03:13, 18th August, 2020

В сценарии, где у меня есть несколько файловых сборок (например, 1 exe и 5 DLL), я буду использовать разные версии файлов для каждой, но одну и ту же версию assembly для всех них, что позволит вам узнать, с какой exe каждой из библиотек DLL идет.


  Сведения об ответе

repe

22:05, 1st August, 2020

Версии файлов используются только для отображения, в то время как версия assembly играет важную роль в поведении загрузки .NET.

Не совсем. Версия файла также важна для программы установки Windows при обновлении существующей версии по сравнению с предыдущей.


  Сведения об ответе

piter

08:25, 18th August, 2020

В моем текущем приложении каждый проект VS имеет ссылку на исходный файл "AssemblyBuildInfo", который имеет следующие атрибуты:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

Таким образом, все сборки в моем решении совместно используют одну и ту же версию и информацию о компании (то есть, если мне придется изменить ее, я изменю ее только один раз). Исключив FileVersion, он автоматически устанавливается на AssemblyVersion.


  Сведения об ответе

P_S_S

03:30, 29th August, 2020

@Adam: вы меняете версию файла с каждой сборкой? Вы используете систему управления версиями (SYN или VSS) и используете эту информацию для связи источника с двоичными файлами?

Кажется, имеет смысл, что версия Assembly остается прежней. то есть "2.0.0.0". Это соответствует deployment продукта.

Версия файла изменяется в соответствии с редакцией из системы управления версиями. "2.0.??.revision" это обеспечит связь от конкретного dll (или exe) к источнику, который его построил.


  Сведения об ответе

prince

04:00, 19th August, 2020

Я написал пост в блоге на эту тему, который может быть полезен сообществу http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx


  Сведения об ответе

park

21:06, 1st October, 2020

Я держу их такими же. Но тогда у меня нет многофайловых сборок, и именно тогда число AssemblyVersion становится важным. Я использую кодировку даты в стиле Microsoft для своих номеров сборки, а не автоматическое увеличение (я не считаю количество раз, когда что-то было построено, настолько важным).


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться