Исключение вложенных элементов из контроля версий - PullRequest
6 голосов
/ 05 июля 2010

Я использую шаблоны T4 для генерации некоторых файлов .config в проекте, над которым я работаю.

Я настроил задачу перед сборкой, чтобы найти все файлы .tt в решениикаталога, а затем запустите инструмент командной строки TextTransform, чтобы код генерировался заново при каждой сборке.

Однако теперь у меня возникают ошибки «Отказано в доступе», потому что (например), когда он пытаетсявыполнить TextTransform для файла Web.UAT.tt, файл Web.UAT.Config находится под контролем исходного кода в TFS и, таким образом, защищен от записи.

Обычно я выбираю файл .Config в Visual Studio ивыполните File-> Source Control-> Exclude From Source Control.К сожалению, это не отображается как опция для любого файла, который отображается как «вложенный» под другим файлом!

, т.е. я могу исключить web.tt, но не web.config ... Я могу исключить default.aspx, но не default.aspx.cs.

Кто-нибудь имеет какие-либо идеи о том, как я могу исключить вложенные файлы нижнего уровня из управления исходным кодом, но сохранить файлы верхнего уровня?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Хорошо ... Я использовал адаптированную версию ответа Андраса Золтана.

В основном я закончил следующим образом:

  1. Нажмите на файл .tt в Visual Studio и измените строку «Пользовательский инструмент» в Свойствах, чтобы она была пустой. Это удалит файл .config из решения.
  2. Добавьте в решение новый пустой элемент, который будет называться любым выходным файлом для .tt (поэтому Web.UAT.tt -> Web.UAT.config).
  3. Выберите вновь добавленный файл и исключите его из управления исходным кодом как обычно («Файл» -> «Управление исходным кодом» -> «Исключить»).

Теперь, когда вы строите, вы должны видеть вновь созданные файлы в решении, но без каких-либо проверок.

У этого метода есть пара недостатков. Во-первых, вам нужно будет сделать это для каждого файла .tt в проекте и убедиться, что все остальные разработчики делают то же самое. Во-вторых, теперь вы можете только создавать выходные файлы, выполняя сборку!

Я думаю, что в долгосрочной перспективе я, возможно, воспользуюсь советом Андраса и напишу какой-нибудь скрипт MSBuild, чтобы либо проверять и возвращаться в выходных файлах, либо, по крайней мере, удалять флаг «Только для чтения» с помощью .

Спасибо!

2 голосов
/ 06 июля 2010

Я предполагаю, что вы используете TFS здесь.

Вы не сможете сделать это идеально - поскольку Visual Studio автоматически добавит любой новый элемент, добавленный в проект, в систему управления версиями.Лучшее решение - изучить использование MSBuild и оформить извлечение для выходного файла перед запуском шаблона (но затем вам, вероятно, придется регистрироваться снова).Быстрый просмотр: 1004 *, о котором я упоминал, упоминается для целей этого.

Если это не так, есть другой способ.

  • Удалить изsource-control - выходной файл .config и регистрация (лучше всего использовать Source Control Explorer для этого).
  • Запустите .tt вручную из VS, он снова добавит файл - теперь он должен иметьзнак плюс рядом с ним.
  • Снова в проводнике управления версиями щелкните правой кнопкой мыши этот «новый» файл и выберите «Отменить ожидающие изменения».Теперь у вас есть файл на диске, но не в управлении исходным кодом.
  • Теперь можно запустить TT, файл является частью проекта (и, следовательно, будет опубликован или что-то еще), но он не находится под контролем исходного кода..

Проблема в том, что кто-то другой загрузит проект в первый раз, их Visual Studio автоматически создаст выходной файл, если они запустят .TT - в этом случае им либо понадобитсячтобы повторить этот процесс (из шага 2) или потребуется вручную создать заглушку .config файла с правильным именем (я бы посоветовал еще до загрузки проекта), чтобы проект видел его и не пытался повторно найти источник.контролировать это.

...