Web.Configs в разных средах разработки (и SVN)

#asp.net #svn #web-config

#asp.net #svn #web-config

Вопрос:

Итак, у нас есть процесс сборки, который обрабатывает разные web.configs разработки в разных средах. Мы используем атрибут configSource и просим Team City выбрать соответствующий файл.

Это здорово, но что мне делать, когда у разработчиков немного разные среды?

CI, не может помочь, потому что все получают его прямо из SVN (т. Е. CI, очевидно, не создается для каждого локального компьютера разработчика).

Я буду использовать раздел конфигурации ConnectionStrings в качестве примера:

 <connectionStrings configSource=".ConfigConnectionStrings.config">
</connectionStrings>
 

И у нас есть:
configsConnectionStrings.config ( общий)

Но мне может понадобиться использовать:

 configsConnectionStrings.dev1.config
configsConnectionStrings.dev2.config
configsConnectionStrings.dev3.config
 

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

Есть идеи?

Ответ №1:

Вы пробовали изучать преобразования web.config? Они могут быть в состоянии обеспечить функциональность, которую вы ищете, сохраняя при этом все в системе управления версиями или требуя каких-либо изменений кода. Кроме того, он будет работать не только для строк подключения, Но и для каталогов и т. Д.

Ответ №2:

Один из методов, который мы использовали в прошлом (я помню, как Айенде упоминал об этом в веб-ролике), заключается в том, что каждая строка подключения называется именем компьютера разработчика, например

 <connectionStrings>
    <add name="BobsPC" connectionString=""/>
    <add name="JonsPC" connectionString=""/>
</connectionStrings>
 

Затем при отладке мы ищем имя строки подключения «текущего» имени компьютера.

Это избавляет от необходимости иметь несколько файлов строк подключения. Вместо этого у нас есть один файл с несколькими строками подключения.

Ответ №3:

У нас есть отдельный файл подключения, как вы упомянули, с текущим именем компьютера в нем. В событие сборки для проектов, которым требуется строка подключения, мы добавили предварительно созданное событие, которое удаляет файл connection.config из текущего проекта, а в событии post build мы копируем connections.machine.config в connections.config в текущей папке проекта.

В нашем web.config у нас есть so .NET, который будет искать информацию о строке подключения в отдельном файле.

Преобразования Web.config можно использовать только при фактическом развертывании проекта. Web.config по умолчанию всегда будет использоваться на вашем локальном компьютере разработки, поэтому это не вариант для сред разработки.

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

Комментарии:

1. Спасибо, Ваутер. Мне действительно нравится это решение. Я попробую это завтра, когда приступлю к работе.