Можно ли преобразовать web.config в цепочку? - PullRequest
1 голос
/ 31 марта 2011

Давайте представим, что у нас есть следующие серверы [dev, test, production] и что dev и test очень похожи по конфигурации, в то время как производство совсем другое.

Если я использую преобразования web.config, это означает, что мне нужно продублировать множество настроек для Web.dev.config и Web.test.config. Было бы очень хорошо, если бы я мог использовать тот же механизм преобразования для моих преобразований, чтобы test.config основывался на dev.config.

Я подумал о двух возможных подходах, но я не уверен, что какой-то из них сработает:

  • Попробуйте заставить MSBuild сначала преобразовать dev.config, а затем запустить test.config для результата, когда мы работаем в тестовой конфигурации
  • пытается заставить механизм преобразования работать с файлами преобразований. Я бы как-то запустил test.config для dev.config и создал временный файл, который затем использовал в качестве преобразования для Web.config.

Кто-нибудь знает, возможно ли что-то подобное? И если так, как можно было бы его настроить?

Ответы [ 3 ]

1 голос
/ 31 марта 2011

TransformXml - это просто задача MSBUILD, которая вызывается после компиляции. Если вы расширяете / модифицируете свою сборку, вы можете дважды запустить задачу преобразования или разрешить нормальный запуск для ваших конфигураций, затем предоставьте второй файл и используйте задачу для выполнения этого.

Если вы знакомы с msbuild, это довольно просто. Если нет, ответьте / прокомментируйте, и я постараюсь привести примеры позже сегодня.

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

1 голос
/ 14 октября 2013

Хотя на этот вопрос уже был дан ответ, я хотел бы обновить его ответом, отражающим изменения, внесенные в Visual Studio 2012, которые значительно облегчили эту задачу.

Начиная с Visual Studio 2012, существует возможность "цепочки" сборки и публикациипреобразования профиля.

Таким образом, у вас может быть преобразование сборки "Release", которое заботится о обычной конфигурации, такой как отключение отладки, включение пользовательских ошибок, и любое количество преобразований "Publish", которые связаны сПубликация профиля, добавление специфических данных экземпляра, таких как строки подключения и appSettings.

В VS 2012 (а также обновления публикации для VS2010 с помощью Azure SDK) теперь поддерживается концепция публикации определенных преобразований.Теперь вы также можете указать конфигурацию проекта, используемую для профиля при публикации в диалоговом окне публикации ...

В этом случае я создал профиль с именем Production и установил для Configuration значение Release.Когда я опубликую этот проект, будут применены следующие преобразования (если файлы существуют) в следующем порядке.

1.web.release.config

2.web.production.config

См. Преобразование конкретного профиля web.config и предварительный просмотр преобразования для получения дополнительной информации.

1 голос
/ 31 марта 2011

У меня есть еще больше конфигураций. И все они синхронизируются с T4. Смотрите мой ответ здесь .

...