Я использую TortoiseSVN и Visual Studio 2008. Есть ли способ обновить проект assemblyinfo.cs с версией svn в каждой сборке?
Например, 1.0.0. [svn version] → 1.0.0.12
Я использую TortoiseSVN и Visual Studio 2008. Есть ли способ обновить проект assemblyinfo.cs с версией svn в каждой сборке?
Например, 1.0.0. [svn version] → 1.0.0.12
Вы можете использовать инструмент SubWCRev, который поставляется с TortoiseSVN (также доступен отдельно).
Либо запустите его из командной строки, либо используйте COM-Object, который он предлагает.
Инструмент командной строки SubWCRev заменяет ключевые слова внутри файла информацией из вашей рабочей копии svn. example показан в документах.
Я делаю это в своем 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.
Вы можете использовать $Rev$
ключевое слово svn, но это даст вам последнюю версию файла, я думаю, вы хотите получить номер версии HEAD
.
Посмотрите на этот вопрос:
Как вы относитесь к Visual Studio addin, делая это?
Да, вы можете добавить событие pre-build, которое вызывает script, который
svn info
, чтобы извлечь текущий номер версии (если вы делаете обновление раньше, вы можете напрямую включить ключевое слово $Revision$
в файл, также проверьте это сообщение);То, что я обычно делаю, это преобразовать шаблон 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
, который преобразует файл с заменой ключевого слова, поэтому он будет делать трюк, если вы обновите локальную копию.
В Visual Studio 2008 вы можете определить событие предварительной сборки, которое может запустить script или небольшую программу. В этой script или программе вы можете использовать команду svnversion, чтобы получить ревизию репозитория, а затем проанализировать AssemblyInfo.cs и изменить номер версии на то, что вы хотите.
Я не уверен, что TortoiseSVN поставляется с svnversion, но он поставляется с сборкой Windows SVN, предоставляемой CollabNet
Я создал плагин версии SVN для Build Version Increment project (который указан в ответе popester). Этот подключаемый модуль SVN вытащит последний номер версии изменения из вашей рабочей копии и позволит вам использовать его в своем номере версии, который должен выполнить именно то, что вы пытаетесь сделать.