IronPython 2.7.7:无法从程序集 'Microsoft.Scripting 加载类型 'System.TypeExtensions',版本 =1.2.0.0
IronPython 2.7.7: Could not load type 'System.TypeExtensions' from assembly 'Microsoft.Scripting, Version=1.2.0.0
我在 运行 在 Visual Studio 2015 C# 控制台应用程序项目中 运行 在 Linqpad 环境中成功 运行 处理一些 IronPython 代码时遇到问题。所以我假设我设置环境的方式存在问题,但我无法诊断问题。
这是我的代码:
using IronPython.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
var options = new Dictionary<string, object>();
options["Frames"] = true;
options["FullFrames"] = true;
//The exception is thrown by the line below
var engine = Python.CreateEngine(options);
string pyscript = @"";
var script = engine.CreateScriptSourceFromString(pyscript);
var paths = engine.GetSearchPaths();
}
}
}
Python.CreateEngine(options) 最终抛出异常:
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in Microsoft.Scripting.dll
其内部异常显示为:
Could not load type 'System.TypeExtensions' from assembly 'Microsoft.Scripting, Version=1.2.0.0, Culture=neutral
内部异常来源:
IronPython
内部异常堆栈跟踪:
at IronPython.Runtime.PythonContext.GetInitialPrefix()
at IronPython.Runtime.PythonContext..ctor(ScriptDomainManager manager, IDictionary`2 options)
此项目引用了 IronPython.StdLib (2.7.7),它使用的是 IronPython (2.7.7)
我使用 dotPeek 浏览了与 IronPython 相关的 dll,但似乎找不到任何引用名为 "System.TypeExtensions" 的类型的内容。当我 google 寻找它时,我似乎找不到这样的类型。
关于我为什么会收到此异常的任何想法?
看起来我的 Linqpad 环境和我的 Visual Studio 环境之间的区别在于他们使用的 DynamicLanguageRuntime 版本。 Linqpad 使用的是 Microsoft.Scripting.dll 的最低兼容版本:1.1.2,而 Visual Studio(通过 Paket)使用的是应该兼容的较新版本:1.2.0.100.l。这些版本号对应于 DynamicLanguageRuntime 的 nuget 版本。
IronPython 2.7.7 应该与 DynamicLanguageRuntime (>= 1.1.2) 兼容,但事实并非如此。我要 post 关于 GitHub 项目的一个问题。但目前,使用 DynamicLanguageRuntime 1.1.2 是一种解决方法。
我在 运行 在 Visual Studio 2015 C# 控制台应用程序项目中 运行 在 Linqpad 环境中成功 运行 处理一些 IronPython 代码时遇到问题。所以我假设我设置环境的方式存在问题,但我无法诊断问题。
这是我的代码:
using IronPython.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
var options = new Dictionary<string, object>();
options["Frames"] = true;
options["FullFrames"] = true;
//The exception is thrown by the line below
var engine = Python.CreateEngine(options);
string pyscript = @"";
var script = engine.CreateScriptSourceFromString(pyscript);
var paths = engine.GetSearchPaths();
}
}
}
Python.CreateEngine(options) 最终抛出异常:
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in Microsoft.Scripting.dll
其内部异常显示为:
Could not load type 'System.TypeExtensions' from assembly 'Microsoft.Scripting, Version=1.2.0.0, Culture=neutral
内部异常来源:
IronPython
内部异常堆栈跟踪:
at IronPython.Runtime.PythonContext.GetInitialPrefix()
at IronPython.Runtime.PythonContext..ctor(ScriptDomainManager manager, IDictionary`2 options)
此项目引用了 IronPython.StdLib (2.7.7),它使用的是 IronPython (2.7.7)
我使用 dotPeek 浏览了与 IronPython 相关的 dll,但似乎找不到任何引用名为 "System.TypeExtensions" 的类型的内容。当我 google 寻找它时,我似乎找不到这样的类型。
关于我为什么会收到此异常的任何想法?
看起来我的 Linqpad 环境和我的 Visual Studio 环境之间的区别在于他们使用的 DynamicLanguageRuntime 版本。 Linqpad 使用的是 Microsoft.Scripting.dll 的最低兼容版本:1.1.2,而 Visual Studio(通过 Paket)使用的是应该兼容的较新版本:1.2.0.100.l。这些版本号对应于 DynamicLanguageRuntime 的 nuget 版本。
IronPython 2.7.7 应该与 DynamicLanguageRuntime (>= 1.1.2) 兼容,但事实并非如此。我要 post 关于 GitHub 项目的一个问题。但目前,使用 DynamicLanguageRuntime 1.1.2 是一种解决方法。