2008-09-30 1 views
17

Я хочу, чтобы мой .exe имел доступ к строке ресурса с моей версией svn. Я могу набрать это вручную, но я бы предпочел автоматическое внедрение этого во время компиляции. Есть ли такая возможность в Visual Studio 2008?Вложение SVN Номер версии во время компиляции в приложении Windows

ответ

21

Я хотел получить аналогичную доступность и нашел $ Rev $ недостаточным, потому что он был обновлен только для файла, если ревизия этого файла была изменена (что означало, что его нужно было бы отредактировать и выполнить очень долго: не то, что я хотел do.) Вместо этого я хотел что-то, что было основано на номере ревизии репозитория.

Для проекта, над которым я сейчас работаю, я написал скрипт Perl, который запускает svnversion -n из самого верхнего каталога моей рабочей копии и выводит самую последнюю информацию о ревизии в файл .h (я фактически сравниваю ее с сохраненная реверсия в файле без версии в моей рабочей копии, чтобы я не переписывал текущую информацию о ревизии при каждом компиляции, но решил ли вы это сделать.) Этот файл .h (или несколько файлов if необходимо, в зависимости от вашего подхода) ссылается как в моем коде приложения, так и в файлах ресурсов, чтобы получить информацию, в которой я бы хотел.

Этот скрипт запускается как шаг предварительной сборки, чтобы все было актуально до того, как сборка начнется, и соответствующие файлы будут автоматически перестроены вашим инструментом сборки.

+9

У TortoiseSVN есть небольшая вспомогательная утилита под названием SubWCRev.exe, которая находит наивысший зафиксированный номер ревизии рабочей копии. – dummy 2008-10-02 06:36:52

+0

Полезно знать! Моя команда очень сильно использует TortoiseSVN, поэтому, вероятно, было бы полезно узнать о помощнике, когда я написал сценарии. Я могу посмотреть в SubWCRev.exe в какой-то момент - неплохо бы отбросить зависимость от обычного дистрибутива Subversion ... – antik 2008-10-02 13:51:25

3

Вы можете получить SVN to embed it for you, если это решит проблему. См. Ключевое слово $ Rev $ на этой странице.

+5

К сожалению, ключевое слово $ Rev $ дает только последнюю версию, в которой * файл, в котором он отображается *, был изменен. – 2008-09-30 00:36:35

3

Посмотрите на замену ключевых слов svn here. Есть еще один вопрос SO here, который я нашел через Google!

3

Решение антика является тем, которое мы используем. Будьте осторожны с использованием переменных окружения, файл .h гарантирует, что вы можете иметь зависимость, которая приведет к перекомпиляции любых файлов, которые необходимо перекомпилировать при изменении номера версии svn rev.

15

Как насчет использования SubWCRev инструмента командной строки, который поставляется с кодом TortoiseSVN. Вы создаете файл шаблона с токенами в нем, как $ WCREV $ $ WCDATE $ и т. Д. Затем выполните шаг предварительной сборки, который запускает SubWCRev в вашем файле шаблона, чтобы создать фактический исходный файл, который подается в компилятор.

Смежные вопросы