Я использую 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
.
У меня все сработало, после того как я исправил другие ошибки компиляции в вашем коде (символы комментария) и установил compilerParameters.WarningLevel
.