[C#]VS2017使用google v8 Javascript引擎
阿新 • • 發佈:2018-05-08
using cal ESS tengine clas .exe value .com bug
V8是JavaScript渲染引擎,號稱是最快的,因為品牌效應,我信了,相關介紹網上一堆,我就不粘貼了,原庫是直接提供給c++調用的,這裏會用到微軟的ClearScript.V8(包裝v8),JavaScriptEngineSwitcher.V8(包裝ClearScript)兩個C#庫。
一、安裝:
1、項目右鍵,選擇 管理NuGet程序包
2、搜索下面4個包並安裝
3、檢查引用目錄下面是否存在相關dll鏈接庫,不存在需要手動添加,運行後如果碰到缺少相關dll的問題,將項目根目錄下packages\ClearScript.V8.x.x.x文件裏面的相關dll文件拷貝到Release/Debug目錄下。
發下牢騷:我在這步的時候運行出錯,查了一下原因,是由於缺少v8.x64.dll,立馬去https://github.com/v8/v8/ 下載源碼,想自己編譯個最新版的dll,下下來之後就懵逼了,咋編譯啊,cmake、makefile、sln一個沒見啊,各種百度,各種安裝,python、mingw(gcc)、cygwin(選錯了,裝後70G,-_-#)、depot_tools、Shadowsocks、Proxifier(depot_tools的gclient需要代理),哈哈,最後還是沒搞定,果斷放棄了,耗時大半天,話說就不能弄個大眾的編譯環境麽?非得什麽都自己的,坑貨!!!!如果朋友們看到這裏,有會的,編譯通過的,還望教教我。
二、 測試代碼
public class TestJsClass { public int arg1 { get; set; } public int arg2 { get; set; } public TestJsClass(int a1) { arg1 = a1; arg2 = 0; } public void Alert(string v) { MessageBox.Show(v); } }
測試調用:
string jsContent = @" var a = ‘‘; var test = function(b){ testC.Alert(a + ‘ ‘ + b); testC.arg1 = 1; testC.arg2 = 2; return testC.arg1 + testC.arg2; }; "; using (IJsEngine jsEngine = new V8JsEngine()) { TestJsClass testClass = new TestJsClass(1); jsEngine.EmbedHostObject("testC", testClass); jsEngine.Execute(jsContent); jsEngine.SetVariableValue("a", "a_ok"); int rtValue = (int)jsEngine.CallFunction("test", "param_ok"); MessageBox.Show($@"testClass.arg1={testClass.arg1} testClass.arg2={testClass.arg2} return:{rtValue}"); }
結果:
很好執行成功,個人感覺非常好用,互相調用與傳參。
[C#]VS2017使用google v8 Javascript引擎