我有一段代码,它使用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