Как правильно установить номер версии SVN на dll .NET с помощью библиотеки задач сообщества MSBuild - PullRequest
5 голосов
/ 23 августа 2011

Я использую библиотеку задач сообщества MSBuild для получения текущей версии SVN набора, который в моих файлах AssemblyInfo для получения ревизии в окончательной скомпилированной dll.

Как вы знаетеВерсия SVN может быть как «28» или «28M» - если есть модификации.Если я делаю сообщение MSBuild и выводю свойство Revision, я вижу, что после модификации я получаю 28M, но при обновлении AsseblyInfo я продолжаю получать только 28 в номере версии ..?

Я хотел бы иметь 28M в номере версии, чтобы указать, что dll собрана с использованием неконтролируемой модификации.Как я могу заставить это работать?

<Target Name="Compile">
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SvnTool)">
  <Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>

<ItemGroup>
  <AssemblyInfoFiles Include="x.a\Properties\AssemblyInfo.cs" />
  <AssemblyInfoFiles Include="x.b\Properties\AssemblyInfo.cs" />
</ItemGroup>

<FileUpdate Files="@(AssemblyInfoFiles)"
            Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
            ReplacementText="$(MajorVersion).$(MinorVersion).$(Revision).0" />

<MSBuild  Projects="$(MSBuildProjectDirectory)\ConfigExplorer.sln" Targets="Rebuild" Properties="Configuration=$(BuildType);" />

1 Ответ

4 голосов
/ 05 ноября 2011

Номера версий сборок .Net строго набираются.Они не просто строки, а ushorts, что означает, что они имеют максимум 65535 (см. Документы http://msdn.microsoft.com/en-us/library/cbf1574z.aspx).. Если вы используете ревизию svn (как я это делал в какой-то момент), ваша сборка прекратится, как только она превысит это магическое число.

Схема, которую я также использовал для обозначения сборок разработчика и сборок CI, заключалась в использовании версий в виде {year}.{month}.{day}.{build}, где номер сборки был указан с дополнительным параметром сборки. Это дало нам дату сборки, а также указывает, была ли это сборка разработчика (т. е. последний компонент был нулевым)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...