ConfigurationationManager.OpenMappedExeConfiguration не загружает файл конфигурации в конструкторе XAML - PullRequest
2 голосов
/ 11 января 2011

Я создал файл конфигурации, связанный с библиотекой управления пользователями WPF.При запуске приложения в отладчике или самостоятельно, конфигурация прекрасно загружается с использованием следующего кода, который выполняется в контексте библиотеки:Конструктор XAML в Visual Studio 2010, файл конфигурации не загружается.Используя Process Monitor, я определил, что он пытается загрузить файл конфигурации в следующем месте: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MapControl.dll.config.К сожалению, это не каталог, содержащий файл конфигурации.ConfigurationManager.OpenMappedExeConfiguration ожидает, что файл конфигурации будет относиться к исполняемому файлу, но в контексте конструктора XAML исполняемого файла как такового нет.Есть ли способ указать расположение файла конфигурации, чтобы он был загружен при просмотре элемента управления в конструкторе XAML?

1 Ответ

0 голосов
/ 02 ноября 2011

Вы можете использовать метод System.ComponentModel.DesignerProperties.GetIsInDesignMode, чтобы определить, находитесь ли вы в режиме разработки или нет. Вот так:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
{
    fileMap.ExeConfigFilename = "F:\ull\Path\To\Your\Debug\MapControl.dll.config";
}
else
{
    fileMap.ExeConfigFilename = "MapControl.dll.config";
}

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

if (config != null)
{
    _Instance = (MapControlConfiguration)config.GetSection("MapControlConfiguration");
}
...