Подрывная операция AssemblyInfo.cs и TortoiseSVN

Я использую TortoiseSVN и Visual Studio 2008. Есть ли способ обновить проект assemblyinfo.cs с версией svn в каждой сборке?

Например, 1.0.0. [svn version] → 1.0.0.12

Ответ 1

Вы можете использовать инструмент SubWCRev, который поставляется с TortoiseSVN (также доступен отдельно).

Либо запустите его из командной строки, либо используйте COM-Object, который он предлагает.

Инструмент командной строки SubWCRev заменяет ключевые слова внутри файла информацией из вашей рабочей копии svn. example показан в документах.

Ответ 2

Я делаю это в своем build script:

<SvnInfo LocalPath=".">
  <Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
  Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
  ReplacementText='$1.$2.$(BuildRev)$5' />

с помощью задач сборки сообщества. Это существенно применит регулярное выражение к AssemblyInfo.cs, заменив текущую ревизию на версию svn.

Ответ 4

Как вы относитесь к Visual Studio addin, делая это?

Ответ 5

Да, вы можете добавить событие pre-build, которое вызывает script, который

  • вызывает svn info, чтобы извлечь текущий номер версии (если вы делаете обновление раньше, вы можете напрямую включить ключевое слово $Revision$ в файл, также проверьте это сообщение);
  • изменяет ваш файл Properties\AssemblyInfo.cs соответственно.

То, что я обычно делаю, это преобразовать шаблон AssemblyInfo.cs при построении проекта. script необходимо адаптировать форму $Revision $к синтаксису этого файла, к сожалению.

Интересными свойствами являются (где строки шаблона находятся между '$'):

[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev$")]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev$")]

Изменить: svn info является частью стандартного клиента SVN, а не TortoiseSVN, как указано в другом сообщении. Простота установки. Тем не менее, TortoiseSVN поставляется с SubWCRev.exe, который преобразует файл с заменой ключевого слова, поэтому он будет делать трюк, если вы обновите локальную копию.

Ответ 6

В Visual Studio 2008 вы можете определить событие предварительной сборки, которое может запустить script или небольшую программу. В этой script или программе вы можете использовать команду svnversion, чтобы получить ревизию репозитория, а затем проанализировать AssemblyInfo.cs и изменить номер версии на то, что вы хотите.

Я не уверен, что TortoiseSVN поставляется с svnversion, но он поставляется с сборкой Windows SVN, предоставляемой CollabNet

Ответ 7

Я создал плагин версии SVN для Build Version Increment project (который указан в ответе popester). Этот подключаемый модуль SVN вытащит последний номер версии изменения из вашей рабочей копии и позволит вам использовать его в своем номере версии, который должен выполнить именно то, что вы пытаетесь сделать.