访问编译器的错误和警告

时间:2009-01-26 13:50:53

标签: c#

我正在为我的一个大学课程开发一个简单的C#编辑器,我需要将一个.cs文件发送给编译器并收集错误(如果存在)并在我的应用程序中显示它们。换句话说,我想将C#编译器添加到我的编辑器中。调试器有这样的东西吗?

3 个答案:

答案 0 :(得分:8)

如果您使用CodeDomProvider

using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

// the compilation part

// change the parameters as you see fit
CompilerParameters cp = CreateCompilerParameters(); 
var options = new System.Collections.Generic.Dictionary<string, string>();
if (/* you want to use the 3.5 compiler*/)
{
    options.Add("CompilerVersion", "v3.5");
}
var compiler = new CSharpCodeProvider(options);
CompilerResults cr = compiler.CompileAssemblyFromFile(cp,filename);
if (cr.Errors.HasErrors)
{
    foreach (CompilerError err in cr.Errors)
    {
        // do something with the error/warning 
    }
}

答案 1 :(得分:1)

使用System.Diagnostics.Process类启动通用流程并从标准输入/输出收集I / O.

对于这个特定场景,我建议你看一下Microsoft.CSharp.CSharpCodeProvider课程。它会为你完成任务。

答案 2 :(得分:0)

您可以在命令中调用C#编译器,然后捕获输出。

Check here for more information on building from the command line