我从Python脚本加载可移植的.NET库(用于标准的.NET和Silverlight环境)存在严重的麻烦。如何在Iron Python脚本中加载可移植的.NET库?
.NET DLL文件版本是4.0.3.319.233(System.Core.DLL),IronPython是2.7.1,运行在32位/ x86模式下。 Visual Studio 2010与.NET 4下的C#。还安装了用于便携式库使用的Microsoft .NET更新KB2468871(版本2)。
如果我试图从Python脚本加载库:
clr.AddReferenceToFileAndPath(UsedPath+"\\MyNamespace\\MyPortableLibrary.dll")
它不能被访问,当脚本达到一个类型,它说: “属性[类型便携式组件]'namespace#'是只读的“ ”表示程序集尚未加载(或作为Silverlight,并且不能由Python脚本使用)。
代码更改为:(来自的System.Reflection Assembly类)
PortableAssembly = Assembly.LoadFrom(UsedPath+"\\MyNamespace\\MyPortableLibrary.dll") # load through .NET Reflection, Python won't load Portable assembly properly!
clr.AddReference(PortableAssembly)
导致错误: exceptions.IOError发生 消息:[错误2]无法加载文件或程序集“系统.Core,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes'或其依赖项之一。该系统找不到指定的文件。
当从另一个.NET程序中自动调用Python脚本,实例化它自己的Python引擎时,最后的代码似乎工作,但是当从Visual Studio中的Python项目执行脚本时会出现上述错误。 VisualStudio中的Python设置,Tools \ Options \ Python Tools \ Interpreter选项适用于x86/32位模式。所有的环境参数都表明使用了.NET 4。
我现在有多种方法可以从C#/ .NET生成的Python引擎中修复它,但是如何将可移植程序集加载到基本的IronPython运行时环境中,以便它可以在正确的.NET 4环境中工作,而不是试图加载任何.NET 2的东西?
更新: 我在MS KB2468871更新后重新启动并重建了我的便携式库,并且还卸载了VS的IronPython和Python工具,并将它们替换为版本2.7.3和1.5(VS2010)。 'System.Core,Version = 2.0.5.0'的错误仍然存在。
您是否找到了解决此问题的解决方案?我现在面对这个问题已经有2天了,而且我无法完成它的工作。 – 2015-06-22 06:39:24