2011-08-14 7 views
6

Jintを使用してJavaScriptファイルを読み込みたいのですが、わかりません。ドキュメントではengine.run(file1)のようなことができると言われましたが、ファイルをロードしていないようです。ファイル名に特別なことをする必要がありますか?私はそれが動作Runに手動でコードを入れた場合C#でJintを使用してJavaScriptファイルをロードするにはどうすればよいですか?

// test.js 
status = "test"; 

はここ

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

私のC#です:

は、ここに私のJavaScriptファイルです。

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

答えて

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(); 
0

私は手動でテキストに自分自身をファイルをロードするのではなく、ここに述べたように、名前でそれをロードすることで、回避策を見つけ

using(FileStream fs = new FileStream("test.js", FileMode.Open)) 
{ 
    JintEngine js = JintEngine.Load(fs); 
    object result = js.Run("return status;"); 
    Console.WriteLine(result); 
} 
+0

System.Runtime.Serialization.SerializationExceptionは、未処理 メッセージであった(あなたのコードを使用して)=入力ストリームが有効なバイナリ形式ではありません。開始内容(バイト単位)は次のとおりです。73-74-61-74-75-73-20-3D-20-22-74-65-73-74-22-3B-0D ... ソース= mscorlib StackTrace: at System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__ BinaryParser input) at System.Runtime.Serialization.Formatters.Binary .__ BinaryParser.ReadSerializationHeaderRecord() –

+0

ダニエル、私はポイントがわかりません'Run()'はスクリプトの実行を期待し、ファイル名は期待しません。ファイルの内容を手作業で文字列( 'File.ReadAllText()')に読み込み、その文字列で 'Run()'を呼び出してみてください。 –

2

は個人的に私が使用します。

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

コンパクトでちょうど良いです。

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(); 
関連する問題