Понятия не имею, где я это нашел. Но я нашел это в Интернете "где-то".
Это обновляет все файлы AssemblyInfo.cs до начала сборки.
Работает как шарм. Все мои exe и dll отображаются как 1.2.3.333 (если «333» были версией SVN в то время.) (И оригинальная версия в файле AssemblyInfo.cs была указана как «1.2.3.0»)
$ (ProjectDir) (где находится мой файл .sln)
$ (SVNToolPath) (указывает на svn.exe)
мои пользовательские переменные, их объявления / определения не определены ниже.
http://msbuildtasks.tigris.org/
и / или
https://github.com/loresoft/msbuildtasks
имеет задачи (FileUpdate и SvnVersion).
<Target Name="SubVersionBeforeBuildVersionTagItUp">
<ItemGroup>
<AssemblyInfoFiles Include="$(ProjectDir)\**\*AssemblyInfo.cs" />
</ItemGroup>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)">
<Output TaskParameter="Revision" PropertyName="MySubVersionRevision" />
</SvnVersion>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$1.$2.$3.$(MySubVersionRevision)" />
</Target>
РЕДАКТИРОВАТЬ ---------------------------------------------- ----
Сказанное выше может перестать работать после того, как номер вашей версии SVN достигнет 65534 или выше.
См:
Выключить предупреждение CS1607
Вот обходной путь.
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="AssemblyFileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="AssemblyFileVersion("$1.$2.$3.$(SubVersionRevision)" />
Результат этого должен быть:
В Windows / Explorer // Файл / Свойства …….
Версия сборки будет 1.0.0.0.
Версия файла будет 1.0.0.333, если 333 - это версия SVN.