CSharpCodeProvider не возвращает предупреждения компилятора, когда нет никаких ошибок

Я использую 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.

6
задан abatishchev 2 April 2017 в 04:12
поделиться

2 ответа

Вы не установили CompilerParameters.WarningLevel

1
ответ дан 17 December 2019 в 20:29
поделиться

У меня все сработало, после того как я исправил другие ошибки компиляции в вашем коде (символы комментария) и установил compilerParameters.WarningLevel .

1
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: