AssemblyInfo.cs Subversion и TortoiseSVN - PullRequest
       27

AssemblyInfo.cs Subversion и TortoiseSVN

17 голосов
/ 25 октября 2009

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

Например, 1.0.0. [Версия svn] -> 1.0.0.12

Ответы [ 7 ]

13 голосов
/ 25 октября 2009

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

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

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

7 голосов
/ 25 октября 2009

Я делаю это в моем скрипте сборки :

<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.

3 голосов
/ 25 октября 2009

Вы можете использовать ключевое слово $Rev$ svn , но это даст вам последнюю версию файла, я думаю, вы хотите получить номер HEAD версии.

Посмотрите на этот вопрос:

2 голосов
/ 25 октября 2009

Да, вы можете добавить событие перед сборкой, которое вызывает скрипт, который

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

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

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

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

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

2 голосов
/ 25 октября 2009

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

1 голос
/ 25 октября 2009

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

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

0 голосов
/ 12 апреля 2010

Я создал плагин версии SVN для проекта Увеличение версии сборки (который назван в ответе Popester). Этот плагин SVN извлечет номер последней редакции изменения из вашей рабочей копии и позволит вам использовать его в номере вашей версии, что должно выполнить именно то, что вы пытаетесь сделать.

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