Вопрос

Я пытаюсь динамически скомпилировать некоторый код 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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top