可能吗? (在wpf或Windows窗体程序甚至是asp.net应用程序中的Visual Studio资源)

时间:2012-08-14 14:01:22

标签: c# 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)
        {
        }
    }
}

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

2 个答案:

答案 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的新实例,但这可能有点过分。