Какие файлы проекта С# должны ли я контролировать версию?

У меня есть проект, который я ищу для управления вручную с помощью управления версиями perforce, поскольку у меня есть только версия Express. Я ищу, какие файлы должны быть исключены в контроле версий, поскольку блокирование многих файлов может привести к проблеме для компиляции и отладки визуальной студии.

Что я до сих пор включил.
.cs файлы (кроме папки свойств)
.resx файлы
Файлы .csproj

Исключенные
папка bin
папка obj
Папка свойств
.user

Сообщите мне, есть ли что-то большее, что должно быть включено, которое я исключил, или если есть лучший способ сделать это.

Ответы

Ответ 1

Вы должны включить папку "Свойства"; он содержит AssemblyInfo.cs(со всеми атрибутами сборки) и файлы ресурсов и настроек по умолчанию проекта, если они есть.

Вы также должны включить файл .sln, если он есть.

Ответ 2

Также исключить:

.suo
app.config (you should commit something like app-dev.config instead)

Re: app.config:

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

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

Ответ 3

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

Также, если у вас есть документация, связанная с проектом - спецификации, проекты, файлы справки и т.д. Поместите их в отдельные папки под проектом, а затем включите их также.

Ответ 4

Если я использую сторонние библиотеки DLL, я их управляю ими с проектом и использую бок о бок развертывание, чтобы DLL копировалась в папку bin во время компиляции (в отличие от просто регистрации DLL в GAC), Результатом этого является еще один разработчик, который может вывести проект из источника управления и иметь зависимости, необходимые для успешной компиляции и запуска проекта. Нет никакой расточительной загрузки и установки сторонних компонентов, и вы уверены, что все разрабатывают/тестируют ту же версию DLL третьей стороны.