Автоматическое управление номером версии сборки в VS2008

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

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

Любые предложения о том, как я могу упростить управление ресурсами версии моего проекта?

7 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

Для достижения этого использования

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

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

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

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

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

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

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

Другие вопросы по тегам