2014-01-17 100 views
2

我得到一個內部編譯器錯誤:C#類不能被加載

System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.

是什麼讓他們不加載?這個錯誤沒有提供任何幫助,MSDN告訴你關於無法被加載的類拋出,而不是爲什麼它們不能被加載。

從字面上來說,沒有任何信息可以阻止類被加載,我可以找到幫助我嗎?

編輯:它實際上並沒有告訴我在哪一行拋出異常。並非所有的類都是公共的,有些是內部的,但爲了使系統工作需要公開的類是公共的(在調用代碼中沒有使用公共以外的類)。這個DLL是在VS13中編譯的,我在VS中用於測試的快速控制檯應用程序工作正常 - 它識別DLL中的命名空間,並使用可用的公共類。但是,當我將該DLL從發行版構建到程序中並與之配合使用時,那就是當我遇到此錯誤時。

+0

從頭開始清理和重建?你能在其他機器上重現問題嗎? –

+0

也許程序集加載失敗:請查看[fusion日誌查看器](http://msdn.microsoft.com/en-us/library/e74a18c4(v = vs.110).aspx) – rene

+0

該類是否公開 - 可見在大會之外? – Honzajscz

回答

0

看起來像一個簡單的錯誤:使用DLL的目標平臺不斷更新,並且不指定.NET版本;通常假設這意味着它使用'最新'。哦,不,回滾通過構建目標的DLL最終產生了一個工作的DLL。將此作爲請求發佈給程序的作者;這有助於你知道你在做什麼!

TL; DR: 錯誤的目標版本的.NET,更改爲3.0允許DLL工作,沒有抱怨。