自定义ConfigurationSection类型未正确加载

Rya*_*ett 5 .net c# configuration

每次我ConfigurationManager.GetSection("registeredPlugIns")为这个自定义部分做一个我收到此错误:

为registeredPlugIns创建配置节处理程序时发生错误:

无法从程序集'System.Configuration,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'加载类型'Engine.PlugInArch.PlugInConfigurationSection'.

为什么要尝试加载类型System.Configuration而不是我要求的组件?

这是我的部分代码:

namespace Engine.PlugInArch
{
    public class PlugInConfigurationSection : ConfigurationSection
    {
        [ConfigurationProperty("plugIns", IsDefaultCollection = false),
         ConfigurationCollection(typeof(PlugInCollection), AddItemName = "addPlugin")]
        public PlugInCollection PlugIns
        {
            get { return this["plugIns"] as PlugInCollection; }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的app.config

<configuration>
    <configSections>
    <section name="registeredPlugIns" type="Engine.PlugInArch.PlugInConfigurationSection, Engine"/>
    </configSections>
        ...
    <registeredPlugIns>
       <plugIns>
           <addPlugIn DllName="ProcessorPlugin.dll"/>
       </plugIns>
     </registeredPlugIns>

</configuration>
Run Code Online (Sandbox Code Playgroud)

Ali*_*tad 10

你的dll叫做Engine.dll吗?我认为不是,这就是问题所在.

好的,从sysinternals运行procmon.将过滤器设置为您的进程名称,并过滤result ="NAME NOT FOUND".您将看到它正在寻找Engine.dll或Engine.exe的条目.查看它的查找位置,可能需要将文件复制到正在运行的文件夹中.

  • `<section name ="registeredPlugIns"type ="Engine.PlugInArch.PlugInConfigurationSection,Engine"allowExeDefinition ="MachineToApplication"/>`*仍然爱你.Net!* (6认同)
  • 我添加了allowExeDefinition ="MachineToApplication",这似乎可以解决问题.谢谢你的帮助. (3认同)