Fre*_*res 11 javascript c# chakra
微软可能(实际上我认为它将来)将IE10 Chakra(JScript引擎)作为一个独立模块发布,就像谷歌V8 JavaScript引擎一样.
Che*_*eso 23
Javascript的Chakra引擎可通过IActiveScript接口用于C#程序.这与IronPython模型不一样 - 通过Chakra这种方式调用的JS没有编译成MSIL,也不是.NET逻辑.它不在CLR/DLR上运行.它运行在自己的引擎中.
// Initialize Chakra (requires IE9 to be installed)
var guid = new System.Guid("{16d51579-a30b-4c8b-a276-0ff4dc41e755}");
Type t = Type.GetTypeFromCLSID(guid, true);
// you must have a p/invoke defn for IActiveScript
var engine = Activator.CreateInstance(t) as IActiveScript;
var site = new ScriptSite(); // this is a custom class
engine.SetScriptSite(site);
var parse32 = engine as IActiveScriptParse32;
parse32.InitNew();
// parse a script
engine.SetScriptState(ScriptState.Connected);
parse32.ParseScriptText(scriptText, null, null, null, IntPtr.Zero, 0, flags, out result, out exceptionInfo);
IntPtr comObject;
engine.GetScriptDispatch(null, out comObject);
// iDispatch is a COM IDispatch that you can use to invoke script functions.
var iDispatch = Marshal.GetObjectForIUnknown(comObject);
iDispatch.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, iDispatch, arguments);
Run Code Online (Sandbox Code Playgroud)
这是一个用C#编写的winforms测试应用程序,通过这个界面运行Chakra:

你可以从这里下载.(查找ScriptHost.zip文件)
更多信息:
IE9的Javascript引擎(代号为"Chakra")的ProgId或CLSID是什么
C# 和 IronPython 都是 .NET 语言。它们共享相同的运行时,因此可以轻松交互。没有任何迹象表明 Chakra 是基于 .NET 构建的;相反,考虑到它为了性能而将 JavaScript 编译为机器代码,我想说它不会以相同的方式集成。
他们可能会提供一个 .NET API,使将 JS 从 .NET 语言传递到 JavaScript 引擎成为可能,但这只是我的猜测。