我正在使用Roslyn在運行時執行C#代碼。使用Roslyn從外部文件執行代碼
首先我想這個代碼(正常工作):
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"");"
當compliling代碼我得到一個錯誤少了東西。
所以我想通了,它只是反斜槓。
,並改變了代碼如下:
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\"\");\""
這是正常的!通常情況下,應該刪除斜槓,但情況並非如此。
什麼問題
EDIT
我要保持我過時了以羅斯林代碼完全匹配的字符串,所以不建議樣改變答案文件中的字符串。另請解決!
試着把這段代碼放在文件中:'System.Console.Write(「Hello World」);',沒有別的。應該工作正常。 – 2013-03-18 16:26:23
你是什麼意思?我從來沒有聽說過! – 2013-03-18 16:26:53
您不需要在文件中轉義字符串。 StreamReader爲您做到了這一點。只需輸入它就像我編輯的評論。 – 2013-03-18 16:27:45