Диспетчер конфигураций.GetSection дает ошибку "не удалось загрузить тип...из сборки…"
мой app.config файл выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ProcessConfiguration" type="Configuration.ProcessConfigurationSection, Configuration" />
</configSections>
<ProcessConfiguration>
<processes>
<process name="Process1" />
</processes>
</ProcessConfiguration>
</configuration>
у меня есть следующие (отдельные) классы для получения конфигурации:
namespace Configuration
{
using System.Configuration;
public class ProcessesConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("processes", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(ProcessCollection))]
public ProcessCollection Processes
{
get
{
return (ProcessCollection)base["processes"];
}
}
}
}
namespace Configuration
{
using System.Configuration;
public class ProcessCollection : ConfigurationElementCollection
{
public ProcessConfig this[int index]
{
get
{
return (ProcessConfig)BaseGet(index);
}
set
{
BaseAdd(index, value);
}
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ProcessConfig)element).Name;
}
protected override ConfigurationElement CreateNewElement()
{
return new ProcessConfig();
}
}
}
namespace Configuration
{
using System.Configuration;
public class ProcessConfig : ConfigurationElement
{
[ConfigurationProperty("name", IsRequired = true, IsKey = true)]
public string Name
{
get
{
return (string)this["name"];
}
set
{
this["name"] = value;
}
}
}
}
однако, когда я попал в эту строку кода:
var processConfigurationSection = ConfigurationManager.GetSection("ProcessConfiguration") as ProcessesConfigurationSection;
Я получаю ошибку, которая гласит:
ошибка при создании обработчика раздела конфигурации для ProcessConfiguration: не удалось загрузить тип - Конфигурация.ProcessConfigurationSection ' из сборки "Конфигурация".
я полностью в тупике, если кто-нибудь может мне помочь, я был бы очень признателен.
2 ответов
в строку:
<section name="ProcessConfiguration" type="Configuration.ProcessConfigurationSection, Configuration" />
имя "конфигурация" должно ссылаться на DLL, которую вы создаете, попробуйте проверить это и исправить при необходимости.
также я думаю, что у вас может быть опечатка, в вашем коде имя типа:
ProcessesConfigurationSection
(обратите внимание на процессы против процесса)
эта ошибка вызвана тем, что вызывающая сборка не смогла загрузить тип класса в указанную сборку. Эта ошибка может быть вызвана пробел после имени типа (Что случилось со мной), например, следующий раздел конфигурации
type="Configuration.ProcessConfigurationSection , Configuration"
также создаст эту ошибку.