web-dev-qa-db-ja.com

ConfigurationManager.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の構成セクションハンドラの作成中にエラーが発生しました:アセンブリ 'Configuration'からタイプ 'Configuration.ProcessConfigurationSection'をロードできませんでした。

私は完全に困惑しています。誰かが私を手伝ってくれるなら、本当に感謝します。

24
RichardB

行:

<section name="ProcessConfiguration" type="Configuration.ProcessConfigurationSection, Configuration" />

「構成」という名前は、再構築するDLLを参照する必要があります。これを確認し、必要に応じて修正してください。

また、あなたはタイプミスがあるかもしれないと思います、あなたのコードではタイプ名は次のとおりです:

ProcessesConfigurationSection

(プロセスvsプロセスに注意)

47
Justin Harvey

このエラーは、呼び出し側のアセンブリが指定されたアセンブリのクラス型を読み込めなかったために発生しました。このエラーは、タイプ名の後にspaceが原因である可能性があります(これは私に起こりました)。たとえば、次の構成セクション

type="Configuration.ProcessConfigurationSection , Configuration"

このエラーも生成されます。

3
AAAA