Я использую класс CSharpCodeProvider
для компиляции сценария C #, который я использую в качестве DSL в своем приложении. Если есть предупреждения, но нет ошибок, свойство Errors
результирующего экземпляра CompilerResults
не содержит элементов. Но когда я ввожу ошибку, предупреждения внезапно появляются и в свойстве Errors
.
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(
compilerParameters,
script);
foreach (CompilerError error in results.Errors)
{
Console.Write(error.IsWarning ? "Warning: " : "Error: ");
Console.WriteLine(error.ErrorText);
}
Так, как мне получить предупреждения, когда нет ошибок?
Кстати, я не хочу устанавливать TreatWarningsAsErrors
в true
.