6

Jintを使用してJavaScriptファイルをロードしたいのですが、理解できないようです。ドキュメントには、のようなことができると書かれてengine.run(file1)いましたが、ファイルをロードしていないようです。ファイル名で何か特別なことをする必要がありますか?

これが私のJavaScriptファイルです:

// test.js
status = "test";

これが私のC#です

JintEngine js = new JintEngine();
js.Run("test.js");
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();

コードを手動で入力するRunと機能します。

object result = js.Run("return 2 * 21;"); // prints 42
4

5 に答える 5

3

http://jint.codeplex.com/discussions/265939で説明されているように名前でファイルをロードするのではなく、自分でファイルをテキストに手動でロードすることで回避策を見つけました。

        StreamReader streamReader = new StreamReader("test.js");
        string script = streamReader.ReadToEnd();
        streamReader.Close();

        JintEngine js = new JintEngine();

        js.Run(script);
        object result = js.Run("return status;");
        Console.WriteLine(result);
        Console.ReadKey();
于 2011-08-14T20:00:21.263 に答える
2

個人的に使用するもの:

js.Run(new StreamReader("test.js"));

コンパクトでうまく機能します。

于 2013-05-17T20:58:06.597 に答える
0

試す

 using(FileStream fs = new FileStream("test.js", FileMode.Open))
 {
    JintEngine js = JintEngine.Load(fs);
    object result = js.Run("return status;");
    Console.WriteLine(result);
 }
于 2011-08-14T19:46:33.860 に答える
0

さらに簡潔に(コードを使用して)

JintEngine js = new JintEngine();
string jstr = System.IO.File.ReadAllText(test.js);
js.Run(jstr);
object result = js.Run("return status;");
Console.WriteLine(result);
Console.ReadKey();
于 2016-09-13T22:36:09.160 に答える
0

構文が変更されました。Jint 3.0.0-betaを使用する場合は、Runの代わりにExecuteメソッドを使用してください。

StreamReader streamReader = new StreamReader("test.js");
string script = streamReader.ReadToEnd();
streamReader.Close();

Engine js = new Engine();

js.Execute(script);
object result = js.Execute("return status;");
Console.WriteLine(result);
Console.ReadKey();
于 2021-06-23T17:00:18.943 に答える