Недавно я начал работу над различными проектами C# в Visual Studio в рамках плана крупномасштабной системы, которая будет использоваться для замены нашей текущей системы, построенной из мощения различных программ и скриптов, написанных на C и Perl. Проекты, над которыми я сейчас работаю, достигли критической массы за то, что они были преданы подрывной деятельности. Мне было интересно, что должно и не должно быть привязано к хранилищу проектов Visual Studio. Я знаю, что он будет генерировать различные файлы, которые являются только сборками-артефактами, и на самом деле не нужно их фиксировать, и мне было интересно, есть ли у кого-нибудь советы по правильному использованию SVN с Visual Studio. На данный момент я использую сервер SVN 1.6 с бета-версией Visual Studio 2010. Любые советы, мнения приветствуются.Рекомендации по проектам Subversion и Visual Studio
ответ
Вы можете добавить следующие файлы управления Visual Source Студия:
- Файлы решений (
*.sln
).- Файлы проекта, например,
*.csproj
,*.vbproj
файлов.- Файлы конфигурации приложения на основе XML, используемые для управления временем выполнения проекта Visual Studio.
Файлы, которые вы не можете добавить в систему управления включают в себя следующее:
- опция пользователя Solution файлы (
*.suo
).- Файлы параметров проекта проекта, например,
*.csproj.user
,*.vbproj.user
файлов.- Файлы веб-информации, например
*.csproj.webinfo
,*.vbproj.webinfo
, которые управляют расположением виртуального корня веб-проекта.- Создайте выходные файлы, например,
*.dll
и*.exe
.
Это хороший список. В основном вам нужен минимальный набор файлов, необходимых для компиляции проектов. –
Для выполнения '.user' существует [случай] (http://stackoverflow.com/a/72370/4847772), по крайней мере, в некоторых случаях. Те файлы, которые не добавляются, следует добавить в ['svn: ignore'] (http://svnbook.red-bean.com/en/1.8/svn.advanced.props.special.ignore.html). – PJTraill
Те, кто использует Visual Studio 2015, также захотят исключить папку '.vs' из исходного элемента управления. См. Http://stackoverflow.com/q/31526899/2615878. – Theophilus
уровень Решение:
- добавить файл в
.sln
решение - игнорировать пользовательские настройки
.suo
решение файл
Уровень проекта:
- добавить
.csproj
,.vbproj
(и C++ proj?) файлы - игнорировать
.csproj.user
,.vbproj.user
файлы - игнорировать каталог
bin
- игнорировать
obj
каталог - игнорировать любые файлы/каталоги, которые получают сгенерированные во время выполнения (то есть. журналы)
Если вы используете и VS Addins, они могут создавать файлы, которые также нуждаются в игнорировании (то есть. ReSharper генерирует .resharper
и .resharper.user
файлов).
Элементы ignore могут быть проигнорированы явно по имени файла (то есть MyProject.csproj
) или шаблону подстановки (то есть *.csproj.user
).
После того как вы ваш игнорируемые настройки, проверяя чистую копию источника сооружался не должен затем показать никаких изменений (то есть. Нет нового неверсированных).
Я бы предложил использовать AnkhSVN - плагин управления исходным кодом Subversion для Visual Studio 2008/2010.
Вы можете использовать его для выполнения вашего первоначального добавления и фиксации решения, проектов и источников в репозиторий и не будет добавлять никаких артефактов сборки. Он не добавит ничего, что генерируется вашей сборкой, только файлы, на которые ссылается ваше решение. Если есть какие-либо другие бит и куски, которые вам нужны, которые не находятся в вашем решении, вы можете добавить их впоследствии.
Я бы включил все файлы, которые, я думаю, не должны контролировать версию.
Моя глобальная игнорировать картина:
.dll .pdb .exe .cache .webinfo .snk бен OBJ отладки _Resharper.Пользователь ReSharper
Поместите следующие файлы в систему управления версиями:.
- .dsw (VS6 рабочего пространства)
- .dsp (VS6 проект)
- .sln (VS Solution)
- * проектируемый (VS Project файлы различных типов)
- , конечно, исходные файлы и другие артефакты, которые вы создаете
ли не поместить следующие файлы в систему управления версиями:
- .ncb (что-то делать с просмотром или intellsense)
- .suo (настройки рабочего пространства пользователя, как размещение окна и т.д. - я думаю)
- .user (настройки проекта пользователя, как точки останова, и т.д. - я думаю)
Кроме того, не помещайте в любых объектных файлов, исполняемых файлов, автоматически создаваемых файлов (например, заголовки, которые могут быть сгенерированы).
Что касается исполняемых файлов и других сгенерированных файлов - может быть исключение, если вы хотите иметь возможность архивировать выпуски. Это может быть хорошей идеей, но вы, вероятно, захотите управлять этим немного по-другому и, возможно, в другом месте, чем ваш исходный код. Если вы это сделаете, также заархивируйте файлы .pdb, чтобы позже вы могли отлаживать материал. вы можете использовать Symbol Server для хранения архивных символов (см. Debugging Tools for Windows для сервера символов и его документации).
Вот мой список VS конкретных файлов, которые я исключаю из SVN:
Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
Nit-picking: ваше слово «не вставляйте ... исполняемые файлы», но в следующем абзаце вы говорите, что можно! – PJTraill
В случае, если вы используете список игнорируемых, SVN чувствителен к регистру. Поэтому не забывайте игнорировать папки bin и bin отдельно.
Кроме того, у меня возник вопрос .. почему требуется много времени, чтобы обновить значок статуса? Время от времени это становится очень запутанным.
См. Mercurial .hgignore for Visual Studio 2008 projects для списка игнорирования Mercurial. Я не знаком с синтаксисом списка игнорирования SVN, но в этом потоке есть несколько хороших списков того, что игнорировать в Visual Studio.
Это VS2010 C#. Существуют некоторые различия между этим и VS2010 C++, например. Дайте ему тег C#. – Bitterblue