Что произойдет, если я не укажу 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>