Автоматическое управление числом версии сборки в 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, чтобы сделать что-то вроде этого, я выполнил инструкции здесь Хотя мой способ не охватывает несколько сборок.