Автоматическое управление номером версии сборки в VS2008 - PullRequest
13 голосов
/ 04 марта 2009

У меня есть проект VS2008, написанный на c # с несколькими сборками. Я хотел бы иметь простой способ управления номерами версий между всеми различными сборками и способ автоматического увеличения номера сборки и сохранения его в номере версии каждой сборки.

Я предполагаю, что это проблема с большинством проектов, так что, вероятно, она была решена раньше?

Какие-либо предложения о том, как я могу упростить управление ресурсами версий моего проекта?

Ответы [ 7 ]

17 голосов
/ 04 марта 2009

Я использую файл .cs на уровне решения, который связан со всеми проектами в решении, который содержит следующие строки:

using System.Reflection;
[assembly : AssemblyVersion("1.2.3.*")]

И обязательно удалите атрибут AssemblyFileVersion из файла AssemblyInfo в своем проекте.

10 голосов
/ 04 марта 2009

Поместите файл в решение, назовите его «SolutionInfo.cs» (я предполагаю, что C # также будет работать в VB). В это вкладывают все свойства, которые у вас есть общие. Начните с AssemblyVersionAttribute.

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

3 голосов
/ 04 марта 2009

У нас есть один файл AssemblyInfoGlobal.cs на уровне решения, как и другие ответы. Затем мы имеем в качестве части нашего сценария сборки небольшое приложение, которое принимает CCNetLabel, который определен CruiseControl.net (и использует defaultLabeller для генерации меток), и извлекает глобальный файл, изменяет номер версии, а затем проверяет глобальный файл обратно в .

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

Затем мы также обновляем номера версий проектов развертывания - номера для них находятся в файле VDProj, но я не уверен, что вы найдете их в экспресс-версиях - я думаю, что это полная версия Professional вверх. И некоторые проекты имеют дюжину проектов развертывания, но нет простого способа извлечения номера версииf из самого файла VDPROJ. (или есть?)

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

1 голос
/ 03 ноября 2010

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

Просто комментарий к этому, автоматически сгенерированный номер версии циклов. Так что, если вы хотите иметь такую ​​версию, чтобы вчерашняя сборка имела версию 1.2.3.X, где X

Для этого используйте

[assembly : AssemblyVersion("1.2.*")]

Это даст вам версию 1.2.X.Y, где комбинация X.Y сегодня больше, чем вчера. Я предполагаю, что X.Y являются функцией даты и времени соответственно

0 голосов
/ 04 марта 2009

Я использовал svnversion Задачи сообщества MSBuild , чтобы сделать что-то подобное, я следовал инструкциям здесь Хотя путь Я делаю это не охватывает несколько сборок.

0 голосов
/ 04 марта 2009

Вы можете использовать звездочки в вашем AssemblyInfo.cs:

// Version information
[assembly: AssemblyVersion( "1.0.*" )]

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

0 голосов
/ 04 марта 2009

Вы можете написать собственное задание MSBuild для этого. Взгляните на этот подход

...