Что произойдет, если я не укажу CompilerVersion с CSharpCodeProvider и почему в большинстве примеров это указано?

Типичные примеры кода с использованием CSharpCodeProvider проходить CompilerVersion параметр. Код отсюда:

var codeProvider =
    new CSharpCodeProvider(
       new Dictionary<String, String> { { "CompilerVersion", "v3.5" } });

Я попытался передать пустой словарь, а также попытался вызвать конструктор без параметров CSharpCodeProvider и результат тот же.

Так что же происходит внутри, если я не укажу `CompilerVersion? Почему большинство образцов указывают это всегда?

1 ответ

Решение

В документации говорится, что он получает его либо из machine.config или web.config указано в папке конфигурации вашего фреймворка.

Например, мой файл Framework64/config/web.config содержит это:

<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v4.0"/>
        <providerOption name="WarnAsError" value="false"/>
    </compiler>
Другие вопросы по тегам