我正在使用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 的确切字符串,所以不要建议像更改文件中的字符串这样的答案。请另一种解决方案!