Вопрос

Можно ли переместить ApplicationSettings в другой конфигурационный файл, как это возможно с помощью ConnectionStrings или AppSettings?

Когда я создаю настройки для своего веб-приложения с помощью конструктора, я получаю раздел ApplicationSettings в моем web.config, такой как:

  <applicationSettings>
    <TestWebApplication.Properties.Settings>
      <setting name="AnotherSetting" serializeAs="String">
        <value>Another setting value</value>
      </setting>
    </TestWebApplication.Properties.Settings>
  </applicationSettings>

Я хотел бы иметь возможность переместить их в другой файл, например AppSettings:

<appSettings configSource="config\appsettings.config"/>

Я работаю с проектом, который имеет множество настроек, доступных через класс, созданный с помощью designer, и web.config чрезвычайно сложно поддерживать в нескольких средах.Было бы еще лучше, если бы я мог заставить класс Settings использовать AppSettings, а не ApplicationSettings.

Возможно ли это?

Заранее благодарю за помощь.

Это было полезно?

Решение 5

Этот вопрос не был отмечен как ответ в течение достаточно долгого времени. Ну, под ответом marc_s есть комментарии, которые объясняют, что это невозможно. Я не хотел отмечать ответ marc_s как принятый ответ, потому что в комментариях говорится совсем не то, что ответ. Так что ответ таков: к сожалению, это невозможно.

Другие советы

Ваааа, опоздал на этот вопрос, но я только что ударился головой об стену над этим вопросом Оказывается, вы можете сделать это, но не для всего узла applicationSettings, вы должны делать каждый дочерний узел applicationSettings отдельно. Я получил волшебную информацию из нижней части MSDN SectionInformation.ConfigSource article.

содержимое app.config / web.config

<applicationSettings>
    <TestWebApplication.Properties.Settings configSource="externalfile.config" />
</applicationSettings>

содержимое externalfile.config:

<TestWebApplication.Properties.Settings>
    <setting name="AnotherSetting" serializeAs="String">
        <value>Another setting value</value>
    </setting>
</TestWebApplication.Properties.Settings>

Да, конечно, это возможно!Любая конфигурационная секция в любом из ваших конфигурационных файлов может быть "экстернализована" с помощью атрибута configSource="otherConfigFile.config".

Было бы еще лучше, если бы я мог принудительно использовать класс Settings AppSettings, а не ApplicationSettings.

Чтобы сделать это, вам нужно отказаться от использования приятных визуальных классов "Настроек" в .NET и напрямую использовать ConfigurationManager.Таким образом, вы можете ввести свои настройки в <appSettings> и прочитать их с помощью ConfigurationManager.AppSettings["ключевое имя"].

Марк

Если бы это был мой проект, я бы избавился от applicationSettings и переместил бы все в раздел appSettings. Значение applicationSettings заключается в том, что значения могут быть строго типизированы и доступны для Intellisense. Ни один из них не особенно выгоден для вашей ситуации. Конечно, этот большой удар по переносу всего не стоит, если вы все еще создаете настройки с помощью дизайнера.

Хм ... я знаю, что это возможно, потому что я знаю, что мы делали это на предыдущей работе. Я точно не помню, как именно. Я считаю, что у нас был родительский проект, который мы использовали для наследования настроек, и был ручной шаг, посредством которого, если мы вносили изменения в applicationSettings в подпроекте, нам нужно было вручную скопировать изменения в родительский проект (но тогда они были унаследованы всеми дочерними проектами).

Извините за отсутствие конкретики; Я не был тем, кто реализовал решение, и со временем оно стало для меня неясным. Однако я помню, что мы смогли это сделать, и я думаю, что мои воспоминания точны относительно того, как мы это делали.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top