Версии SVN в VS с T4
Из-за различных внутренних проблем в нашем рабочем процессе я настроил следующий рабочий процесс управления версиями:
- Создан шаблон T4, который содержит ключевое слово SVN ($URL:).
- В коде T4 C# я извлекаю версию SVN из этого ключевого слова.
- Удален AssemblyInfo.cs из проекта.
- Версия SVN переопределяет версию сборки:
- Сборочная версия 999.999.999 для багажника SVN
- Сборочная версия xy999 для ветки SVN
- Сборочная версия xyz для релиза SVN
- Где: x= основная версия, y= вспомогательная версия, z=rev (из SVN)
- Да: я полностью игнорирую номер сборки, что для меня нормально, версия SVN должна быть ведущей. Я хочу, чтобы версия SVN и версия сборки совпадали из-за других проблем рабочего процесса.
- Выходной файл.cs из шаблона T4 содержит статический класс, который содержит статическую строку версии SVN (которую я теперь могу свободно использовать в остальной части моего проекта, например, для целей отображения).
- Создан файл.bat, который преобразует все шаблоны T4 в моих проектах перед сборкой
Все вышеперечисленное работает нормально (и без установки каких-либо SDK вместо стандартной установки VS2015).
Теперь моя проблема (более или менее косметическая вещь): когда я фиксирую ветку в SVN, он регистрирует csproject с форматом сборки "xy999". Затем я делаю релиз в SVN, проверяю, T4 делает свое дело и работает нормально, но: теперь файл.csproj указывает, что он отличается от релиза из SVN. Это из-за следующих отличий:
REL_BR_1_0 <ApplicationVersion>1.0.999.0</ApplicationVersion>
RELEASE_1_0_3 <ApplicationVersion>1.0.3.0</ApplicationVersion>
Кто-нибудь знает, как преодолеть этот последний вопрос? Может быть, в SVN можно игнорировать определенные части.csproj? Или использовать трюк при совершении? Много гуглил, но не могу найти обходной путь или трюк, который мне подходит.
Спасибо!