AppDomain и настройка раздела ввода - PullRequest
1 голос
/ 11 марта 2009

У меня есть приложение Windows в .Net 2.0, которое использует несколько уровней файлов конфигурации. По независящим от меня причинам приложение состоит из проекта приложения Windows (.exe) и нескольких библиотек DLL, каждая из которых имеет свой собственный файл app.config.

Я успешно выяснил, как читать конфигурационный файл для каждой DLL, используя (в C #)

ConfigurationManager.OpenMappedExeConfiguration("my DLL's config file path", ConfigurationUserLevel.None);

Это работает очень хорошо - я могу подтвердить, что я получаю объект конфигурации из этого метода, когда он указывает на путь к файлу конфигурации моей библиотеки DLL ("foo.dll.config"). Однако когда я пытаюсь получить доступ к пользовательскому разделу конфигурации, я получаю исключение, в котором говорится, что тип данных для моего пользовательского раздела конфигурации не найден.

Что еще мне нужно сделать, чтобы информация о наборе была доступна для моего кода при загрузке файла конфигурации таким образом?

1 Ответ

3 голосов
/ 11 марта 2009

Это прискорбно, но верно: способ справиться с этим - скопировать конфигурацию из файлов .dll.config в файл конфигурации приложений. Единственное исключение связано с системой настроек, используемой в Windows Forms. Я думаю, что это делает OpenMappedConfiguration для вас, но я не уверен.

Я никогда не знал, почему они не унифицировали это в .NET 2.0 и не решили проблему. Может быть, я должен спросить.


Ранее в тот же день я задал такой вопрос, связанный с WCF, на форуме в Осло на MSDN (http://social.msdn.microsoft.com/Forums/en-US/oslo/thread/c93ee7f3-4f9b-4044-b1f0-43ad72fb508d). Когда я искал сообщение в блоге или какой-то другой ответ (как я уже говорил выше «Может быть, я должен спросить»), пришел ответ на мой пост на форуме.

Короче говоря, и несколько насмешливый ответ: они не исправили это в .NET 2.0, потому что они ждали, когда Осло решит проблему.

Не пытаясь избежать отрицательных оценок, исходя из этого, я просто упомяну: Осло будет поощрять хранение моделей приложений и компонентов приложений в центральном хранилище. Это будет включать в себя модели конфигурации для каждого экземпляра. Теория состоит в том, что все такие данные будут храниться в одном хранилище (по крайней мере для каждой системы). Таким образом, больше нет вопроса о том, где находится файл конфигурации, все это в одном месте. Больше не нужно искать сборку, содержащую метаданные раздела конфигурации - метаданные хранятся в хранилище вместе с данными конфигурации.

Спроси меня завтра, и я, возможно, почувствую себя по-другому, но сейчас я могу подхватить религию Осло ...

...