我有这个想法:创建一个模拟视觉工作室的程序,以帮助人们学习c#。这将是w3schools.com的“尝试自己”功能
会有一个文本框,用户可以在其中放入一些代码,例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
但现在有一个棘手的部分:例如,如果用户提交了一个synthax错误,我想像Visual Studio那样显示错误,或者当用户点击“验证”按钮时,如果代码错误,我会得到与视觉工作室出现的相同的错误。有可能吗?
答案 0 :(得分:1)
感谢您的回答。我找到了我一直在寻找的东西。我想做的是允许用户在文本框中输入一些代码,当他/她点击"生成"按钮,将编译代码并生成.exe。经过一番研究,我发现了这个课程:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
您可以设置一些参数来生成.exe或dll,然后发送一个字符串作为要编译的代码。如果它有错误,你可以通过这样做来捕获它们:
if (results.Errors.Count > 0)
{
{
foreach (CompilerError CompErr in results.Errors)
{
txtErro.Text = txtErro.Text +
"Line number " + CompErr.Line +
", Error Number: " + CompErr.ErrorNumber +
", '" + CompErr.ErrorText + ";" +
Environment.NewLine + Environment.NewLine;
}
}
}
我希望这对其他人也有用。非常感谢!
答案 1 :(得分:0)
我认为这是可能的,但你必须使用反射。有了它,您可以动态创建C#代码,您可以编译运行时。然而,它是非常先进的,但据我所知,它是可能的。
以下链接可能有用:
Generating DLL assembly dynamically at run time
你真正想要的是:
What are the benefits of Compiler as a Service
但是afaik现在还没有。您也没有获得调试功能。 您可以使用调试等运行VS的新实例,但这可能有点过分。