CSharpCodeProvider doesn't return compiler warnings when there are no errors

Posted by Sandor Drieënhuizen on Stack Overflow See other posts from Stack Overflow or by Sandor Drieënhuizen
Published on 2010-06-13T13:35:58Z Indexed on 2010/06/13 13:42 UTC
Read the original article Hit count: 486

Filed under:

I'm using the CSharpCodeProvider class to compile a C# script which I use as a DSL in my application. When there are warnings but no errors, the Errors property of the resulting CompilerResults instance contains no items. But when I introduce an error, the warnings suddenly get listed in the Errors property as well.

string script = @"
    using System;
    using System; \\ generate a warning
    namespace MyNamespace
        public class MyClass
            public void MyMethod()
                \\ uncomment the next statement to generate an error
                \\intx = 0;

CSharpCodeProvider provider = new CSharpCodeProvider(
    new Dictionary<string, string>()
        { "CompilerVersion", "v4.0" }

CompilerParameters compilerParameters = new CompilerParameters();
compilerParameters.GenerateExecutable = false;
compilerParameters.GenerateInMemory = true;

CompilerResults results = provider.CompileAssemblyFromSource(

foreach (CompilerError error in results.Errors)
    Console.Write(error.IsWarning ? "Warning: " : "Error: ");

So how to I get hold of the warnings when there are no errors? By the way, I don't want to set TreatWarningsAsErrors to true.

© Stack Overflow or respective owner

Related posts about c#

Related posts about compiler