2

С помощью некоторой пользовательской логики я добавил шаблон для своей веб-конфигурации в моем приложении Asp Mvc 4. Когда мне нужно изменить файл web.config, я редактирую файл шаблона для него, и изменения меняются в файле веб-конфигурации при запуске приложения. Проблема заключается в том, что когда я добавляю пакет через nuget, который должен изменить файл веб-конфигурации, я теряю эти настройки, поскольку все из-за избытка моего файла шаблона. Есть ли способ каким-то образом заставить nuget-пакеты модифицировать какой-то пользовательский XML-файл вместо исходного веб-конфигурационного файла. Например, для изменения mytemplate.xml вместо web.config.xml.Пакеты Nuget для добавления своих настроек в пользовательский XML-файл вместо файла конфигурации веб-приложения

Я очень новичок в этой области и не смог найти решение проблемы. Насколько я понимаю, пакеты, которые должны изменить файл web.config, содержат файл web.config.transform, который объединяет необходимые поля, и мои единственные решения - это вручную заменить настройки, добавленные в мой файл веб-конфигурации, пакетом в файл шаблона. Есть ли другое решение? Благодаря!

+0

Вы нашли решение на этом? У меня такая же проблема с пользовательскими преобразованиями web.config. – magnattic

+0

Нет, я не смог найти способ сделать это. – Mdb

ответ

1

Вы используете файл web.config, чтобы сделать две разные вещи:

  1. Статическая конфигурация для NuGet пакетов
  2. Динамическая конфигурация для вашего сайта

web.config файлы позволяют вам определите некоторые параметры во внешнем файле и импортируйте их - например,

<configuration> 
    ... 
    <appSettings configSource="appSettings.config" /> 
    ... 
    </configuration> 

Это appSettings.config:

<appSettings> 
    <add key="umbracoDbDSN" value="..."/> 
    <add key="DefaultInstanceName" value="..."/> 
    <add key="aspnet:MaxHttpCollectionKeys" value="..."/> 
    </appSettings> 

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

ИЛИ PLAN B

packages.config список всех активных пакетов в вашем решении

Пакеты хранят свои настройки web.config в локальном файле: /пакеты/пакет/content/Web.config.transform

Можете ли вы расширить процесс создания файла web.config по адресу:

  1. Перечислять активного пакеты
  2. Проверить содержание/Web.config.transform файла
  3. Объединить эти файлы в сборки трубопровода web.config

Я не вижу какой-либо способ переконфигурировать nuget, чтобы перенаправить конфигурацию в другой файл.

+0

Перечитывая свой пост, я думаю, что я понимаю ваш предложенный подход аутсорсинга определенной секции конфигурации.Я попытаюсь, если это жизнеспособное решение, но потому, что не всегда можно предвидеть, какая часть конфигурации будет изменяться, я бы предпочел решение, в котором вы укажете nuget на использование альтернативного XML-файла для преобразования. – magnattic