Web.config не преобразуется при отладке кода

У меня есть основной файл Web.config, а под ним есть Web.Test.config, Web.Development.Config и т.д.

Когда я просматриваю преобразование через SlowCheetah в тестовой конфигурации, он, как представляется, правильно преобразует значения.

Когда я переключаю среду сборки из "Разработка на тестирование" и пытаюсь отладить приложение, приложение выполняется под любыми значениями в главном файле Web.config (т.е. ничего не преобразует).

Как заставить среду сборки выбрать правильную конфигурацию при отладке, а не просто использовать базовый файл Web.config? Возможно ли это?

Ответ 1

Вы можете преобразовать Web.config в сборку. Добавьте эту цель в файл *.csproj:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="BeforeBuild">
    <TransformXml 
        Source="Web.Base.config" 
        Transform="Web.$(Configuration).config" 
        Destination="Web.config" />
</Target>

Сохраните конфигурацию источника в Web.Base.config. Этого достаточно, чтобы включить преобразование, и оно работает для любого файла конфигурации XML. SlowCheetah больше не требуется.

http://sebnilsson.com/a5410281/asp-net-transform-web-config-with-debug-release-on-build/

Ответ 2

Преобразования XML будут применяться только при публикации веб-приложений, а не во время сборки.

Это сообщение в блоге подробно описывает работу с настройками сборки.