2016-02-22 3 views
11

У меня есть главный Web.config файл, и при том, что есть Web.Test.config, Web.Development.Config и т.д.Web.config не преобразуется при отладке кода

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

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

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

ответ

23

Вы можете преобразовать 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/

+0

Это самое простое решение, я сделал это, и он отлично работает. Но ... всегда есть, но ... Я всегда получаю сообщение об ошибке «Отладка не включен», когда он включен в Web.Base.config, но мой Web.config пуст в первый раз. Выбрав «Изменить файл Web.config для включения отладки» и нажав «ОК», он продолжает работать нормально. Если Web.config имеет последнюю версию с отладкой, она работает нормально. Кажется, что debug enable проверяется перед преобразованием. –

+0

Это решение работает нормально. Но еще одна обратная сторона заключается в том, что все, что Visual Studio/NuGet/и т. Д. изменения в файле 'web.config', необходимо портировать вручную в файл' Web.Base.config'. –

4

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

Этот blog post подробно описывает работу с использованием настроек сборки.

+1

я объединил вышеуказанное решение 'Target BeforeBuild' и этот. Использование ' Web.Base.config'. Благодаря! – mike123

+0

@ mike123 - Не могли бы вы дать более подробное объяснение того, как это выглядит? Выглядит интересно. Мне удалось сделать эту работу с SlowCheetah, используя их пакет nuget для файлов web.config. – arviman

+1

@arviman файл csproj нуждается в изменениях в двух местах: ... \t Web.config \t \t ... ' – mike123

Смежные вопросы