Широкое решение app.config/web.config?

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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>  

Замечания:

Чтобы этот подход работал, общий конфигурационный файл должен быть скопирован в выходной каталог проектов, поэтому он находится рядом с обычным файлом App/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, у вас не может быть конкретной строки подключения для проекта, все строки подключения будут скопированы из общей конфигурации.