Измените только число Пересмотра в AssemblyInfo.cs с задачей MSBuild FileUpdate

Я должен изменить только количество пересмотра AssemblyInfo.cs файл. Номер версии находится в Главном формате. Незначительный. Сборка. Пересмотр, например. 1.4.6.0.

В настоящее время я изменяю версию с FileUpdate задача (из Проекта Задач Сообщества MSBuild) и следующий regex:


Теперь я должен обновить только число пересмотра и отпуск, главный, незначительный и неизменная сборка. Так, там какая-либо задача состоит в том, чтобы сделать это? Или это может быть сделано с regex? Каково было бы регулярное выражение затем?

12
задан Keith Pinson 30 June 2015 в 14:38
поделиться

2 ответа

Как насчет этого:

<FileUpdate Files="Properties/AssemblyInfo.cs"
   Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
   ReplacementText="$1.$2.$3.$(Revision)" />
16
ответ дан 2 December 2019 в 06:45
поделиться

Для этого я использую следующую цель:

<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)\(&quot;([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?&quot;\)"
        ReplacementText="$1(&quot;$2.$(Revision)&quot;)" />
    <FileUpdate Files="@(AssemblyFiles)"
        Multiline="true"
        Singleline="false"
        Regex="AssemblyCompany\(&quot;.*&quot;\)"
        ReplacementText="AssemblyCompany(&quot;My Company&quot;)" />
    <FileUpdate Files="@(AssemblyFiles)"
        Multiline="true"
        Singleline="false"
        Regex="AssemblyCopyright\(&quot;.*&quot;\)"
        ReplacementText="AssemblyCopyright(&quot;Copyright &#169; 2009-$(Year) My Company&quot;)" />
</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-сервером.

7
ответ дан 2 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: