Я должен изменить только количество пересмотра AssemblyInfo.cs
файл. Номер версии находится в Главном формате. Незначительный. Сборка. Пересмотр, например. 1.4.6.0
.
В настоящее время я изменяю версию с FileUpdate
задача (из Проекта Задач Сообщества MSBuild) и следующий regex:
Теперь я должен обновить только число пересмотра и отпуск, главный, незначительный и неизменная сборка. Так, там какая-либо задача состоит в том, чтобы сделать это? Или это может быть сделано с regex? Каково было бы регулярное выражение затем?
Как насчет этого:
<FileUpdate Files="Properties/AssemblyInfo.cs"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$1.$2.$3.$(Revision)" />
Для этого я использую следующую цель:
<Target Name="UpdateAssemblyInfoVersion" DependsOnTargets="GetRevision">
<CreateItem Include="**\AssemblyInfo.vb">
<Output TaskParameter="Include" ItemName="AssemblyFiles"/>
</CreateItem>
<Time>
<Output TaskParameter="Year" PropertyName="Year" />
</Time>
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\("([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?"\)"
ReplacementText="$1("$2.$(Revision)")" />
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="AssemblyCompany\(".*"\)"
ReplacementText="AssemblyCompany("My Company")" />
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="AssemblyCopyright\(".*"\)"
ReplacementText="AssemblyCopyright("Copyright © 2009-$(Year) My Company")" />
</Target>
Она заменяет ревизию (4-й номер) в любом из файлов AssemblyInfo (в нескольких проектах). Она смотрит на теги AssemblyVersion AssemblyFileVersionAttribute и AssemblyFileVersion, и использует свойство $(Revision) MSBuild для номера (у меня есть другая цель под названием GetRevision, которая получает это из SVN и устанавливает свойство, так что эта зависит от этой цели). Regex-замена обрабатывает номера версий, состоящие из 3 или 4 цифр (по какой-то причине у меня была группа только с 3).
Он также устанавливает/перезаписывает информацию о компании и авторских правах, и устанавливает их на "Моя компания". Для авторских прав я не поленился и сделал так, чтобы всегда использовался текущий год, чтобы не забывать обновлять их каждый год (так что там написано, например, "Copyright (c) 2009-2010 My Company").
Для этой цели требуется расширение MSBuild Community tasks.
В соответствии с политикой, все, что проверяется в SVN, имеет .0 в качестве последней цифры, и только CI-сервер изменяет это значение при сборке. Это позволяет нам быстро отличить сборки, созданные разработчиками (которые никогда не разрешается отправлять клиентам), от "официальных" сборок, созданных CI-сервером.