Рекомендации для проектов Subversion и Visual Studio


недавно я начал работать над различными проектами C# в Visual Studio в рамках плана крупномасштабной системы, которая будет использоваться для замены нашей текущей системы, построенной из объединения различных программ и сценариев, написанных на C и Perl. Проекты, над которыми я сейчас работаю, достигли критической массы для того, чтобы быть преданными подрывной деятельности. Мне было интересно, что должно и не должно быть передано в репозиторий для проектов Visual Studio. Я знаю, что это будет создавайте различные файлы, которые являются просто артефактами сборки и на самом деле не нуждаются в фиксации, и мне было интересно, есть ли у кого-нибудь советы по правильному использованию SVN с Visual Studio. На данный момент я использую сервер SVN 1.6 с бета-версией Visual Studio 2010. Любые советы, мнения приветствуются.

7 58

7 ответов:

согласно MSDN:

в систему управления версиями Visual Studio можно добавить следующие файлы:

  • файлы решения (*.sln).
  • файлы проекта, например, *.csproj,*.vbproj файлы.
  • файлы конфигурации приложения на основе XML, используемые для управления поведением проекта Visual Studio во время выполнения.

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

  • файлы параметров пользователя решения (*.suo).
  • файлы параметров пользователя проекта, например,*.csproj.user,*.vbproj.user файлы.
  • файлы веб-информации, например,*.csproj.webinfo,*.vbproj.webinfo, которые управляют виртуальным корневым расположением веб-проекта.
  • создать выходные файлы, например, *.dll и *.exe файлы.

Я бы предложил использовать AnkhSVN - плагин управления версиями Subversion для Visual Studio 2008/2010.

вы можете использовать его для выполнения первоначального добавления и фиксации решения, проектов и источников в репозиторий, и он не добавит никаких артефактов сборки. Он не будет добавлять ничего, что генерируется вашей сборкой, только файлы, на которые ссылается ваше решение. Если вам нужны какие-либо другие фрагменты, которых нет в вашем решении, вы можете добавить их впоследствии.

положить следующие файлы в систему управления версиями:

  • .фонд (VS6 рабочее место)
  • .dsp (проект VS6)
  • .СЛН (решение ВС)
  • .* proj (VS файлы проектов различных типов)
  • конечно, ваши исходные файлы и другие артефакты создании

Do не положить следующие файлы в систему управления версиями:

  • .ncb (что-то связанное с просмотром или intellsense)
  • .suo (настройки рабочего пространства пользователя, такие как размещение окон и т. д. - Я думаю)
  • .пользователь (настройки пользовательского проекта, такие как точки останова и т. д. - Я думаю)

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

что касается исполняемых файлов и других сгенерированных файлов - может быть исключение, если вы хотите иметь возможность архивировать релизы. Это может быть хорошей идеей, но вы, вероятно, хотите управлять это немного по-другому и, возможно, в другом месте, чем ваш исходный код. Если вы это сделаете, также архивируйте свои .pdb файлы, так что вы можете отладить материал позже. возможно, вы захотите использовать сервер символов для хранения архивированных символов (см. средства отладки для Windows для сервера символов и его документации).

вот мой список VS-конкретных файлов, которые я исключаю из SVN:

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps

решение уровня:

  • добавить .sln решение
  • игнорировать .suo файл параметров пользователя решения

проект:

  • добавить .csproj,.vbproj (и C++ проектов?) файлы
  • игнорировать .csproj.user,.vbproj.user файлы
  • игнорировать bin каталог
  • игнорировать obj каталог
  • игнорировать любые файлы/каталоги, которые формируются в ходе время выполнения (т. е. журналы)

если вы используете и VS addins, они могут генерировать файлы, которые также нужно игнорировать (т. е. Для ReSharper выдает .resharper и .resharper.user файлы).

элементы ignore могут быть явно проигнорированы именем файла (т. е. MyProject.csproj), или с помощью шаблона подстановочных знаков (т. е. *.csproj.user).


после того, как вы настроили свои игнорирования, проверьте чистую копию вашего источника, а затем здание не должно показывать никаких изменений (т. е. нет новой версии архив.)

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

мой глобальный шаблон игнорирования:

.файл DLL. распределительная плата. исполняемый.кэш.webinfo .snk bin obj debug _Resharper .пользователь resharper

Если вы используете список игнорирования, SVN чувствителен к регистру. Поэтому не забудьте игнорировать папки bin и Bin отдельно.

кроме того, у меня был вопрос.. почему это занимает много времени несколько раз, чтобы обновить значок состояния? Иногда это становится очень запутанным.

посмотреть ртутный .hgignore для проектов Visual Studio 2008 для ртутного списка игнорирования. Я не знаком с синтаксисом списка игнорирования SVN, но в этом потоке есть несколько хороших списков того, что нужно игнорировать в Visual Studio.