Смешанная среда разработки: автоматизировать обновления Visual Studio .csproj из Git/TFS?

Я надеюсь, что вы поможете мне решить эту проблему рабочего процесса разработки.

Я фронтенд-разработчик, работающий над проектом, в котором большинство других разработчиков используют MS Visual Studio, а я нет. У нас настроена TFS, и я могу проверять код и вносить правки локально.

После внесения изменений я регистрирую свой код в локальном репозитории Git через git add и git commit, а затем отправляю в TFS через git tf checkin.

Проблема заключается в том, что наши разработчики, использующие Visual Studio, не могут видеть файлы, которые я добавил после обновления своих рабочих областей из TFS. Мы обнаружили причину этой проблемы в файлах .csproj — любые файлы, которые я добавляю в репозиторий (например, JavaScript, CSS), должны быть добавлены в проект в Visual Studio вручную, поскольку мой рабочий процесс не использует VS и не обновляет файл .csproj.

  • Кто-нибудь сталкивался с похожей ситуацией и нашел решение?
  • Может быть, есть инструмент, который может замечать добавленные файлы и обновлять файл .csproj, чтобы он соответствовал?
  • Может быть, в Visual Studio есть настройка, чтобы он замечал новые файлы в своих каталогах и автоматически добавлял их в проект?

Спасибо заранее за любые предложения.


person Alex W    schedule 22.05.2015    source источник


Ответы (1)


Есть много возможных решений. Файл .csproj написан на диалекте MSBuild XML, и у него много возможностей: есть целый книга, объясняющая все нюансы.

Решение 1

Вы вручную редактируете файл .csproj, добавляя новые файлы.

Решение 2

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

<Content Include="Images\orderedList*.png" />

Решение 3

Включите отдельный файл .proj, чтобы было понятно, чем вы управляете. В основной .csproj добавить

  <Import Project="Felix.proj" />

чем создать свой отдельный Felix.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Content Include="Images\orderedList*.png" />
</Project>

и мы можем продолжать, но это может быть отправной точкой.

Решение 4

Другой способ — изменить рабочий процесс: зафиксировать через Visual Studio вместо командной строки. Вот как:

  • Установите Visual Studio (по крайней мере, 2013 Update 4, Community Edition должно быть в порядке)
  • редактировать / добавлять файлы так, как вам нравится
  • Откройте .csproj с помощью Visual Studio
  • На панели обозревателя решений выберите параметр Показать все файлы.
  • Щелкните правой кнопкой мыши отсутствующий файл/папку и выберите Включить в проект.
  • сохранить изменения
  • переключитесь на вкладку Team Explorer, вы должны увидеть красные кнопки операций Git
  • выберите Changes и выполните фиксацию
  • вернуться к командной строке для git tf

YMMV

Решение 5

Напишите свой собственный инструмент, который анализирует git status, добавляет добавленные файлы в .csproj и добавляет этот последний на сцену. Скрипт может это сделать.

person Giulio Vian    schedule 22.05.2015
comment
Это отличная отправная точка, спасибо за ваши предложения. К сожалению, и то, и другое приводит к тому, что мне все еще приходится редактировать файл вручную… есть идеи, как я могу автоматизировать этот процесс? Может быть, что-то связано с операторами Git add? - person Alex W; 23.05.2015