从IronPython内部调用基于CodeDom的代码生成时的LoaderException
本文关键字:代码生成 LoaderException CodeDom IronPython 内部 调用 | 更新日期: 2023-09-27 18:18:50
我有一段使用CodeDom动态生成代码的代码。很简单:
- 创建
CodeCompileUnit
并填充类型。 - 机组被传递给
CSharpCodeProvider.CompileAssemblyFromDom
。 - 程序集在内存中生成,所有内容都包装在单个静态方法中,该方法返回生成类型的实例。
如果我从c#调用这个静态方法,一切工作正常,但如果我从IronPython调用这个方法,它就会失败。没有编译错误,返回的CompilerResults
中的CompiledAssembly
不为空。但是如果我为程序集调用GetTypes
,我得到一个ReflectionTypeLoadException
,它告诉我要查看LoaderExceptions。这是一个FileNotfoundException
给出以下消息:
无法加载文件或程序集'PosData, Version=1.0.0.0,文化=中性,PublicKeyToken=null'或其依赖项之一。的系统找不到指定的文件。":"PosData版本= 1.0.0.0,文化=中立,都必须空
PosData是我自己的程序集,它包含代码生成的东西,并且已经被IronPython加载。所有东西都在一个文件夹里,所以我看不出遗漏了什么。
任何提示将非常感激!
你可以给Fusion Log Viewer一个镜头来获取更多的信息。
有关如何使用它的详细信息,请参阅Scott Hanselman的博客条目和MSDN上的此页面。