我有一段代碼,它使用CodeDom來實時生成代碼。它很簡單:從內部調用基於CodeDom的代碼生成時LoaderException IronPython
CodeCompileUnit
創建並填充類型。- 單位傳遞到
CSharpCodeProvider.CompileAssemblyFromDom
。 - 該程序集在內存中生成,所有內容都包裝在一個靜態方法中,該方法返回生成類型的一個實例。
如果我從C#調用這個靜態方法,一切正常,但如果我從IronPython調用方法失敗。沒有編譯錯誤,並且CompiledAssembly
返回的CompilerResults
不爲空。但是如果我爲彙編調用GetTypes
,我會得到一個ReflectionTypeLoadException
,它告訴我查看LoaderExceptions。即一個是FileNotfoundException
給出以下消息:
無法加載文件或程序集「POSDATA,版本= 1.0.0.0, 文化=中性公鑰=空」或它的一個依賴。該 系統找不到指定的文件。「:」 POSDATA,版本= 1.0.0.0, 文化=中立,公鑰=空
POSDATA是我自己的組件,其持有的代碼生成的東西,這是已經加載由IronPython提供。一切都在一個文件夾中,所以我沒有看到可能丟失的內容。
任何提示將非常感激!
這是很難調查,沒有一個項目,再現問題。例如,您可以比較從調用C#和IronPyton代碼生成的IL,以查看是否有差異。 – 2011-12-30 13:27:48
在程序集已經被加載之前,我也有GetTypes上的FileNotfoundException。問題是沒有找到加載程序集引用的程序集。 – 2011-12-30 13:29:31
您絕對應該發佈一些IronPython代碼。 – 2011-12-30 17:48:30