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