Этот вопрос является добрым из двух в одном, но оба они связаны с одной и той же проблемой.
Мы - команда из 10 разработчиков, некоторые разработчики предпочитают использовать полный экземпляр IIS, в то время как другие предпочитают использовать IIS-Express. Есть и достоинства в использовании, например, IIS наиболее близко напоминает производство, в то время как IIS-Express позволяет отлаживать Edit-and-Continue.
В дополнение к 10 разработчикам, мы используем систему управления версиями, и у нас есть ветвящаяся структура. Каждая ветка может иметь разные настройки web.config/app.config, такие как строки подключения к базе данных. Разработчик может работать с несколькими веткими один раз, поэтому у нас обычно есть одна база данных на каждую ветку, мы рассматриваем разработчиков, имеющих локальные базы данных, но столкновение имен все еще остается проблемой независимо от подхода (т.е. у разработчика может быть 2 локальные базы данных, по одному для каждой ветки).
Первая проблема - с файлами csproj, а именно с настройками веб-сервера. Если один разработчик проверяет файл csproj, который использует IIS-Express, а другой разработчик выполняет Get Latest, он перезаписывает их конфигурацию, тратит время и создает разочарование.
Конечно, самым простым решением было бы заставить всех использовать один инструмент, одну конфигурацию, но я бы предпочел не делать этого, особенно для чего-то, что не влияет на результирующий вывод (скомпилированный код).
Вторая проблема связана с конфигурационными файлами, файлы конфигурации хранятся в исходном элементе управления (как и любой другой файл), поэтому, когда мы объединяем ветвление, эти файлы необходимо обновлять вручную. Я знаю, что для конфигурационных файлов существуют преобразования Debug и Release, в которых у нас могут быть разные строки соединений, но это не решает проблему для двух отдельных разработчиков, которые могут работать в одной ветки, но с разными строками подключения.
Очевидным решением для этого является то, что у всех одинаковые настройки всегда, но некоторые разработчики могут захотеть использовать экземпляр LocalDB, другие могут использовать SQL-Express, а промежуточный сервер использует полноэкранный экземпляр SQLServer. Опять же, это еще одна настройка, которая не имеет окончательного результата.
Я не видел никаких решений для моих конкретных проблем в отношении управления конфигурациями между членами команды и между ветвлением/слиянием.