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

StackOverflow https://stackoverflow.com/questions/14770

  •  08-06-2019
  •  | 
  •  

Вопрос

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

Кроме того, как насчет AssemblyInformationalVersion атрибут?

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

Это было полезно?

Решение

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

Другие советы

В решениях с несколькими проектами одна вещь, которую я нашел очень полезной, - это то, что все файлы 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
    }
}

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

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

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

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

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

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

Версии файлов используются только для отображения, в то время как версия сборки играет важную роль в .Поведение при загрузке по СЕТИ.

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

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

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

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

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

Кажется логичным, что версия сборки остается прежней.т. е."2.0.0.0".Это соответствует развертыванию продукта.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top