Этот вопрос является добрым из двух в одном, но оба они связаны с одной и той же проблемой.Различные настройки * .csproj/* .config для каждого члена команды и ветви
Мы являемся командой из 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. Опять же, это еще одна настройка, которая не имеет конечного результата.
Я не видел решений для решения конкретных проблем, связанных с управлением конфигурациями между членами команды и между ветвлением/слиянием.
Я склоняюсь к тому, чтобы заставить людей иметь ту же среду. Тонкие различия между веб-серверами или версиями баз данных могут означать разницу между функцией, работающей или нет в производстве (ужасный «работает на моей машинной» синдроме). IIS (или IIS Express) против Кассини - большая. Но если вы избежите любых шаблонов, которые потенциально могут быть проблемой, я полагаю, вы, вероятно, будете в порядке. –
Я согласен, что это был бы прочный подход, чтобы все использовали одно и то же, если бы мы могли заставить всех согласиться с тем, что должно быть. К сожалению, я не могу сказать другим, как работать. – Matthew