Автоматическое управление номером версии сборки в 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 Для достижения этого использования Это даст вам версию 1.2.XY, где комбинация XY сегодня больше, чем вчера. Я предполагаю, что XY являются функцией даты и времени соответственно[assembly : AssemblyVersion("1.2.*")]
Я использовал задачи сообщества svnversion MSBuild, чтобы сделать что-то подобное, я следовал приведенным здесь инструкциям. Хотя способ, которым я это делаю, не распространяется на несколько сборок.
Вы можете использовать звездочки в вашем AssemblyInfo.cs:
// Version information
[assembly: AssemblyVersion( "1.0.*" )]
Это увеличит ваши номера версий автоматически. Для совместного использования одного номера между всеми сборками... Я не уверен, но, возможно, вы используете упомянутый атрибут в общем файле.
Вы можете написать собственное задание MSBuild для этого. Посмотрите на этот подход