Широкое решение app.config / web.config? - PullRequest
10 голосов
/ 01 июля 2010

У меня есть решение с одним проектом asp.net-mvc-2, одним веб-сервисом, одной библиотекой классов и тремя обычными настольными приложениями. В настоящее время мне нужно скопировать все настройки app.config из одного проекта в другой. Это кошмар, если я хочу что-то изменить.

Я знаю, что есть решение для хранения всей этой информации в глобальных файлах .config, но я ищу решение для хранения значений, предназначенных для моего решения, а не для моей машины. Это возможно?

Ответы [ 4 ]

1 голос
/ 10 апреля 2019

Я нашел действительно простое решение здесь :

1. Создайте файл CommonSettings.config В вашем общем проекте библиотеки классов.

2. Укажите ваши общие настройки в этом файле:

<appSettings>
    <add key="someCommonSetting" value="some value"></add>
    <!-- more setting here -->
</appSettings>

Примечание: <appSetting> должен быть корневым элементом в вашем CommonSettings.config (не указывайте его под <configuration>)

3. Убедитесь, что файл CommonSettings.config скопирован в выходной каталог:

enter image description here

4. Во всех других файлах App.Config / Web.config проекта добавьте вышеуказанные общие настройки

Вот и все ... Общие настройки будут включены в любой другой файл конфигурации.

<appSettings file="CommonSettings.config">
    <add key="Value1" value="123" />
</appSettings>  

Примечание:

Чтобы этот подход работал, файл общей конфигурации должен быть скопирован в выходной каталог проекта, так что он находится рядом с обычным Файл приложения / Web.config. Добавьте существующий общий файл .config в проект как связанный файл и установите его «Копировать, если новее». Тебе следует увидеть что-то похожее на это в вашем файле .csproj:

<None Include="..\CommonConnectionStrings.config">
  <Link>CommonConnectionStrings.config</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

Вы можете сделать то же самое для ConnectionString, скопировать все строки подключения в CommonConnectionStrings.config и в другом App.Config / Web.Config, ссылаться на него так:

<connectionStrings configSource="CommonConnectionStrings.config" />

Примечание. Если вы используете это решение для connectionStrings, у вас не может быть строки подключения для конкретного проекта, все строки подключения будут скопированы из общей конфигурации.

1 голос
/ 29 июня 2012

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

1 голос
/ 17 марта 2016

Я бы прокомментировал ответ @ Sahuagin , но мне не хватает репутации.Это работает с файлами App.config, но вы должны добавить текстовый файл, а затем назвать его App.config.После этого просто объявите XML (как показано ниже)

<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- add you values or whatever here--> </configuration>

, затем сделайте, как сказал @ Sahuagin , и добавьте его в качестве ссылки на ваше решение.Это работает удовольствие.

Надеюсь, это поможет.

1 голос
/ 01 июля 2010

Предполагая, что у вас может быть путь, по которому ваш веб-сайт и веб-служба могут получить к нему доступ, вы можете использовать атрибут «file» appsettings для хранения настроек в одном общем месте.См. http://www.codeproject.com/KB/dotnet/appsettings_fileattribute.aspx Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...