Roslynを使用して実行時にC#コードを実行しています。
最初に私はこのコードを試しました(これはうまくいきます):
engine.Execute(@"System.Console.WriteLine(""Hello World"");");
その後、テキストファイルからコードを実行したかったので、これを実行しました:
string line;
System.IO.StreamReader file = new System.IO.StreamReader("test.txt");
while ((line = file.ReadLine()) != null)
{
engine.Execute(line);
}
以前に使用した文字列をtest.txtという外部ファイルにコピーしました。
したがって、私のtest.txtには次の行が含まれています。@"System.Console.Write(""Hello World"");"
コードをコンパイルすると、何かが欠落しているというエラーが表示されます。
だから私はそれを理解しました、それはただのバックスラッシュでした。
そして、コードをこれに変更しました:
string line;
System.IO.StreamReader file = new System.IO.StreamReader("test.txt");
while ((line = file.ReadLine()) != null)
{
string toto = line;
string titi = toto.Replace(@"\\", @"");
engine.Execute(toto);
}
このコードを実行しても、何も起こりません(エラーはありません)。
そして、変数の内容を調べると、次のようになります。
toto : "@\"System.Console.Write(\"\"Hello World\"\");\""
titi : "@\"System.Console.Write(\"\"Hello World\"\");\""
それは正常ですか!通常、baskslashは削除する必要がありますが、そうではありません。
どうしたの
EDIT
Roslynに渡す正確な文字列をコードで保持したいので、ファイル内の文字列を変更するなどの回答を提案しないでください。別の解決策をお願いします!