Запускаем asp.net-mvc приложения в vs в разных средах

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

Для начала объясню как происходит добавление и переопределение настроек: при публикации происходит преобразование файла Web.config в соответствии с файлом Web.Debug.config или Web.Release.config в новый файл Web.config. То есть преобразователь берет файл Web.config и допустим файл Web.Release.config и создает новый файл Web.config, который затем и публикуется.

И так после понимания этого механизма попробуем использовать этот же  механизм уже при запуске приложения в vs. Но только главный файл с настройками будет теперь Web.Template.config.  Получается преобразователю будем отдавать файл Web.Template.config  и файл Web.Debug.config/Web.Release.config в зависимости от запускаемой конфигурации и получать файл Web.config.
Приступаем к реализации:

  1. Сделаем копию файла Web.config и назовем Web.Template.config
  2. Создаем в корне приложения файл MyWebApplication.wpp.targets
  3. Открываем созданный файл и добавляем такие строчки
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <Target Name="UpdateWebConfig" BeforeTargets="Build">
            <Message Text="Configuration: $(Configuration): Web.Template.$(Configuration).config"/>
            <TransformXml Source="Web.Template.config" Transform="Web.$(Configuration).config" 
    Destination="Web.config" />
        </Target>
        <Target Name="ResetWebConfig" BeforeTargets="Clean">
            <Copy SourceFiles="Web.Template.config" DestinationFiles="Web.config"/>
        </Target>
    </Project>
    

    Что такое msbuild читаем на просторах интернета, а я объясню только то что делают эти строчки: перед событием сборки вызывается преобразователь, который перезаписывает файл Web.config. А перед событием очистка сборки — происходит перезапись данного файла в соответствие с файлом Web.Template.config.
    Минус в такой реализации только один — это только то, что при установке пакетов при помощи менеджера пакетов nuget, последний иногда изменяет файл Web.config. Поэтому когда готовитесь установить новые пакеты, то сначала делайте очистку приложения, чтоб сбросить текущий файл Web.config в Web.Template.config. Затем если nuget изменил файл Web.config, то заменяйте файл Web.Template.config этим файлом.

По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Увеличим размер загружаемого файла (asp.net mvc)

Добавим такие строчки в web.config: <system.web> <httpRuntime targetFramework="4.5" maxRequestLength="50000" /> </system.web> ...... <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="50000000" /> </requestFiltering> </security> Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *