2016-07-20 7 views
0

私はJSPoolとJavaScriptEngineSwitcher.V8を使用して.NETクラスライブラリからいくつかのjavascriptを実行しようとしていますが、JavaScriptEngineSwitcher.V8をインストールする方法を理解できません。私のコードは、これまでの単純なJavaScriptEngineSwitcherのエンジンをインストールするにはどうすればよいですか?

public class Renderer : IDisposable 
{ 
    private readonly JsPool _pool; 
    private static readonly string[] _requiredFiles = { "vendors", "app" }; 

    public Renderer(string jsPath) 
    { 
     _pool = new JsPool(new JsPoolConfig 
     { 
      Initializer = initEngine => 
      { 
       foreach (var file in _requiredFiles) 
       { 
        initEngine.ExecuteFile(jsPath + "\\" + file + ".js"); 
       } 
      } 
     }); 
    } 

    public string Render() 
    { 
     using (var engine = _pool.GetEngine()) 
     { 
      return engine.Evaluate<string>(@"myjsFn()"); 
     } 
    } 

    public void Dispose() 
    { 
     _pool.Dispose(); 
    } 
} 

である。しかし、これは何のエンジンが

NullReferenceException: Object reference not set to an instance of an object. 
JavaScriptEngineSwitcher.Core.JsEngineSwitcher.CreateDefaultJsEngineInstance() 

マイアプリをターゲットとしているdnx451を登録されていないようNullRefExceptionをスローし、私はJSPool 0.4.1とJavaScriptEngineSwitcher.V8指定しました私の依存関係は1.5.8です。私はよく見てきましたが、V8エンジンを登録するのに必要なコードを見つけることはできません。誰かが私を正しい方向に向けることができますか?

+0

再びDNXを使用しないでください。今は意味がありません。 .NET Frameworkまたは.NET Coreと言ってください。 –

+0

FYI、プールの 'GetEngine()'メソッドから返されたオブジェクトのdisposeメソッドを見てみましょう。あなたが期待していたのとは逆に、IIRCはエンジンをプールに戻しません。プールで呼び出す別のメソッドがあります。 – Amy

+0

@Lex Li DNXは、RC1を使って書かれているので、まだアップグレードしていないと言いました。 –

答えて

2

この問題は、JavaScript Engine Switcher version 2.0.0およびJSPool version 2.0.0に解決されました。 NuGetパッケージをインストールする前に、まずドキュメントの“How to upgrade applications to version 2.X”セクションを読むことをお勧めします。

ただし、「JavaScriptEngineSwitcher.V8」モジュールは、「ASP.NETコアWebアプリケーション(.NET Framework)」テンプレートで作成されたWebアプリケーションでのみ使用できます。

+0

こんにちは。 JavaScriptEngineSwitcherのドキュメント/スターターキットを知っていますか?彼らのgit hub wikiのドキュメントは非常に貧弱で、ドキュメントの他のソースがなくなるまで、 –

+1

Ashkan Sirousのいずれかのスターターキットを見つけることができませんでしたが、徐々にGitHubのドキュメントを書きます。これは、長い間[JavaScript Engine Switcher](https://github.com/Taritsyn/JavaScriptEngineSwitcher)が[Bundle Transformer](http://bundletransformer.codeplex)の補助ライブラリだったという事実によるものです。 com /)。その後[React.NET](https://github.com/reactjs/React.NET)が登場し、JavaScript Engine Switcherが人気を博し始めました。 –

+0

素晴らしい:)私のためのリンクも共有してください。ほんとうに必要だ。 –

関連する問題