2013-03-01 20 views
0

我創建了一個類來管理資源從ComponentResourceManager動態派生:使用ComponentResourceManager與裝配動態加載

public class MyResourceManager : ComponentResourceManager 
{ 
    public MyResourceManager(Type _t, Langue _lang) : base(_t) 
    { 
     if (_lang == Langue.French) 
     { 
      MainAssembly = Assembly.LoadFile("c:/myCustomFolder/french.dll"); 
     } 
     else 
     { 
      MainAssembly = Assembly.LoadFile("c:/myCustomFolder/english.dll"); 
     } 
    } 
} 

當我嘗試的資源應用到我的控制,將引發一個異常

public static void UpdateLanguage(Control c, Langue _lang) 
{ 
    MyResourceManager language = new MyResourceManager(c.GetType(), _lang); 
    language.ApplyResources(c, c.Name); 
} 

異常提出:(當調用ApplyResources時)

型 「System.Resources.MissingManifestResourceException」未處理的異常在 mscorlib.dll中

發生其他信息:找不到適合指定區域性或中性文化的任何資源。確保在編譯時「MyAppName.MyFormName.resources」已正確嵌入或鏈接到程序集「MyAppName.resources」中,或者確保所有需要的附屬程序集均可加載並完全簽名。

你有一個想法?

回答

0

最常見的原因是您在創建資源文件或資源文件的構建操作未設置爲嵌入式資源後更改了名稱空間名稱。

+0

該DLL由項目本身(位於文件夾「fr」和應用程序文件夾中的「en」)生成,因此名稱空間是正確的。我只想重命名它們並將它們放在另一個文件夾中並能夠動態加載它們。 – Arno 2013-03-01 08:20:33