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

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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