Пользовательский раздел конфигурации: не Мог загрузить файл или блок

Плавание SQL является двойным согласно документация для SQLDbType.

21
задан ehcanadian 5 November 2009 в 18:42
поделиться

3 ответа

К сожалению, вам потребуется либо сборка ImportEPDMAddin , находящаяся в той же папке, что и ваш исполняемый файл, либо в папке .Net framework, связанной с вашей .Net framework. используются (например, C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727) или зарегистрированы в глобальном кэше сборок.

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

//Class global
private Assembly configurationDefiningAssembly;

protected TConfig GetCustomConfig<TConfig>(string configDefiningAssemblyPath, 
    string configFilePath, string sectionName) where TConfig : ConfigurationSection
{
    AppDomain.CurrentDomain.AssemblyResolve += new 
        ResolveEventHandler(ConfigResolveEventHandler);
    configurationDefiningAssembly = Assembly.LoadFrom(configDefiningAssemblyPath);
    var exeFileMap = new ExeConfigurationFileMap();
    exeFileMap.ExeConfigFilename = configFilePath;
    var customConfig = ConfigurationManager.OpenMappedExeConfiguration(exeFileMap, 
        ConfigurationUserLevel.None);
    var returnConfig = customConfig.GetSection(sectionName) as TConfig;
    AppDomain.CurrentDomain.AssemblyResolve -= ConfigResolveEventHandler;
    return returnConfig;
}

protected Assembly ConfigResolveEventHandler(object sender, ResolveEventArgs args)
{
    return configurationDefiningAssembly;
}

Убедитесь, что вы обработали событие AssemblyResolve, так как это без этого вызовет исключение.

36
ответ дан 29 November 2019 в 20:13
поделиться

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

Привязка сборки -> Проверка

1
ответ дан 29 November 2019 в 20:13
поделиться

Вы удостоверились, что DLL загружается первой? Возможно, с помощью Assembly.LoadFile ("PATH") ?

Если вы не можете заставить классы в System.Configuration работать должным образом, вы всегда можете вернуться к использованию XmlDocument для ручного анализа файла конфигурации . Используйте XPath, чтобы упростить получение данных. Например (при условии, что указанная выше переменная пути):

var document = new XmlDocument();
document.Load(path);
var node = document.SelectSingleNode("configuration/importWorkflows/add[@name='KEY']");
// Do whatever with node
0
ответ дан 29 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: