0

我有这样的想法:创建一个模拟 Visual Studio 的程序来帮助人们学习 C#。这将类似于 w3schools.com 的“亲自尝试”功能

会有一个文本框,用户可以在其中放入一些代码,例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

但现在有一个棘手的部分:例如,如果用户犯了一个合成错误,我想像视觉工作室一样显示错误,或者当用户点击“验证”按钮时,如果代码错误,我d 得到与视觉工作室出现的相同的错误。可能吗?

4

2 回答 2

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;
                    }
                }
}

我希望这对其他人也有用。非常感谢!

于 2012-08-14T15:49:48.953 回答
0

我认为这是可能的,但你必须使用反射。有了它,您可以动态创建可以编译运行时的 C# 代码。然而,它非常先进,但据我所知,这是可能的。

以下链接可能有用:

在运行时动态生成 DLL 程序集

你真正想要的是:

编译器即服务有什么好处

但是 afaik 现在不可用。您也没有获得调试功能。您可能可以通过调试等运行新的 VS 实例,但这可能有点矫枉过正。

于 2012-08-14T14:04:10.727 回答