Наверно перед каждым разработчиком встаёт задача управлением версиями сборок. На заре своей карьеры я делал это самым простым способом - переписывал руками. Потом этот процесс был автоматизирован с nant'ом: он сканировал AssemblyInfo.cs по всему решению, и переписывал версию. Потом через подключение через ссылку общего для всех проектов файла SolutionVersion.cs.
Но в этом решении по прежнему оставался один минус: версия сборки имеет значение только в момент компиляции проекта, и ее нахождение в системе контроля версий бессмысленно. Но если не класть SolutionVersion.cs в контроль версий, то в новой рабочей копии сначала придётся запустить сборку приложения, чтобы его сгенерировать. Иначе студия будет сообщать нам об ошибке. К счастью, решение есть. И оно не такое уж сложное. Давайте по шагам.
Но в этом решении по прежнему оставался один минус: версия сборки имеет значение только в момент компиляции проекта, и ее нахождение в системе контроля версий бессмысленно. Но если не класть SolutionVersion.cs в контроль версий, то в новой рабочей копии сначала придётся запустить сборку приложения, чтобы его сгенерировать. Иначе студия будет сообщать нам об ошибке. К счастью, решение есть. И оно не такое уж сложное. Давайте по шагам.
- Создаём в корневой папке решения пустой файл SolutionVersion.cs
- Подключаем его во все проекты как ссылку.
- Добавляем его в список файлов, которые не будут отслеживаться системой контроля версий (файлы .gitignore; .hgignore).
- Откройте любым редактором файл проекта .csproj, и ищите в самом конце такие строки:
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> -->
Если есть - удаляем комментарии, и пишем свою задачу. Если их нет, то просто допишите pre-build задачу перед закрывающим тегом </Project>
<Target Name="BeforeBuild"> <Exec Command="echo //DO NOT EDIT > $(SolutionDir)\SolutionVersion.cs" condition="!Exists('$(SolutionDir)\SolutionVersion.cs')"> </Exec> </Target>
- И настроим в своём любимом build-tool генерацию этого же файла.
Комментариев нет:
Отправить комментарий