VBCodeProvider не соблюдает OptionInfer в providerOptions?

Я пытаюсь динамически скомпилировать некоторый код 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 или значение? Есть ли где-нибудь еще настройки?

1 ответ

Решение

Из-за отсутствия ответов я решил пропустить Reflector, чтобы увидеть, что происходит, и оказалось, что CompilerVersion, по-видимому, является единственным параметром поставщика, на который ссылаются (в методе RedistVersionInfo.GetCompilerPath).

Я смог заставить пример работать, используя вместо этого член CompilerParameters.CompilerOptions.

Если есть способ сделать это, я все уши.

Другие вопросы по тегам