Здравствуйте, xtile, Вы писали:
Осмелюсь предложить собственное решение данной проблемы. Я написал небольшое консольное приложение, которое запускается в post-build event и как раз и занимается тем, что инкрементит версию сборки. Заранее предупреждаю, что делает оно это так, как нравится мне. Я интерпретирую версии в дотнете следующим образом:
[MajorRevision].[MinorRevision].[ReleaseBuild].[DebugBuild]
Первые два ревижина соответственно не инкрементятся — только последние два в зависимости от конфигурации.
Общий принцип работы таков: файл AssemblyInfo.cs заменяется на файл AssemblyInfo.xml, в котором и прописываются все данные на уровне атрибутов сборки. AssemblyInfo.cs же генерируется динамически (через кодедом) при каждом билде. Благодаря использованию кодедома можно, подправив буквально одну строчку использовать тулзу для проектов на васике или жабе.
Значит как использовать. Пропишите в post-build event проекта соедующее:
[Path]\vi.exe $(ConfigurationName) "$(ProjectDir)
После чего можно билдить проект. Имейте в виду, что AssemblyInfo.cs будет перезаписан — соотв. все данные в нем будут утеряны. При первом запуске тулза создаст файл AssemblyInfo.xml. В этот файл и надо будет теперь вносить все изменения в assembly:attributes. Допускается также добавление собственных атрибутов. Только нужно указывать неймспейс, в котором они содержатся. Например:
<AssemblySupportEmail ns="MyProg.Attributes">smbd@dot.com</AssemblySupportEmail>
Я также советую вообще скрыть с глаз долой AssemblyInfo.cs, сделав его подчиненным файлом xml-я. Это можно провернуть, подправив ручками файл проекта, добавив в него такую строчку:
<File
RelPath = "AssemblyInfo.xml"
BuildAction = "Content"
/>
<File
RelPath = "AssemblyInfo.cs"
DependentUpon = "AssemblyInfo.xml"
SubType = "Code"
BuildAction = "Compile"
/>
После этого AssemblyInfo.cs будет отображаться лишь в режиме просмотра всех файлов проекта как подчиненный файл хмл-я.
Ну и наконец сурсы тулзы:
http://www.rsdn.ru:80/File/16070/Incrementer.cs... << RSDN@Home 1.1.3 stable >>