VBCodeProvider не соблюдает OptionInfer в providerOptions?
-
10-07-2019 - |
Вопрос
Я пытаюсь динамически скомпилировать некоторый код VB в моем проекте на C #, и у меня возникла проблема с VBCodeProvider. Кажется, он не соблюдает флаг OptionInfer, который я помещаю в словарь providerOptions.
Мой код выглядит следующим образом:
var providerOptions = new Dictionary<string, string>();
providerOptions.Add("CompilerVersion", "v3.5");
providerOptions.Add("OptionInfer", "True");
var provider = new VBCodeProvider(providerOptions);
Я установил для моего CompilerParameters.TreatWarningsAsErrors значение True, и я получил следующую ошибку:
Объявление переменной без 'As' оговорка; Предполагаемый тип объекта.
Однако все идет хорошо, когда я включаю " Option Infer On " текст в верхней части моего динамического исходного кода.
Может кто-нибудь пролить свет? Я использую неправильный ключ providerOptions или значение? Есть ли где-нибудь еще настройки?
Решение
Из-за отсутствия ответов я решил пропустить Reflector, чтобы увидеть, что происходит, и оказалось, что CompilerVersion, по-видимому, является единственным параметром поставщика, на который есть ссылка (в методе RedistVersionInfo.GetCompilerPath).
Мне удалось заставить пример работать, используя вместо этого член CompilerParameters.CompilerOptions.
Если есть ЕСТЬ способ сделать это, я весь в ушах.