2013-09-30 46 views
20

的app.config文件如下:ConfigurationManager.GetSection提供錯誤「無法加載類型....從組裝......」

<?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.ProcessConfigurationSection」。

我完全難住,如果任何人都可以幫助我,我會非常感激。

+0

你會想這調試使用[融合日誌查看器](http://msdn.microsoft.com/en-us/library/e74a18c4.aspx)只要確保運行它爲管理員,打開日誌,並在嘗試調試之前重新啓動。您將看到CLR正在查找程序集的位置,以及哪個版本,並從那裏確定它未找到的原因,如果這是問題。 – Will

+0

你正在構建的DLL的名稱是什麼? –

+0

您的類型'ProcessesConfigurationSection'是否在入口程序集中定義? –

回答

40

在行:

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

名稱「配置」應該指的是你重新構建的DLL,請嘗試,如果需要檢查這一點,正確的。

此外,我認爲你可能有一個錯字,在你的代碼的類型名稱爲:

ProcessesConfigurationSection 

(注進程VS法)

+0

謝謝,編譯的二進制文件的名稱是Configuration.exe,所以我認爲這意味着我有這條線是正確的? – RichardB

+1

另請參見:我認爲這可能是一個錯字 –

+0

D'oh!就是這樣,謝謝Justin :) – RichardB

3

此錯誤已被提出,因爲調用組件couldn」 t加載指定程序集中的類類型。這個錯誤可以通過類型名後空間(這發生在我身上)引起的,例如下面的配置部分

type="Configuration.ProcessConfigurationSection , Configuration" 

會產生這個錯誤了。

相關問題