2009-06-23 4 views
1

Я пытаюсь динамически скомпилировать некоторый код VB в моем проекте C#, и у меня возникает проблема с VBCodeProvider. Похоже, что не соблюдайте флаг OptionInfer, который я вставляю в словарь поставщиков.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 Верно, и я получаю следующее сообщение об ошибке:

Variable declaration without an 'As' clause; type of Object assumed.

Однако, все хорошо, когда я поставил " Option Infer On "в верхней части моего динамического исходного кода.

Может ли кто-нибудь пролить свет? Использую ли я неправильный ключ или значение поставщикаOptions? Есть ли другие настройки где-то еще?

ответ

1

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

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

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

+0

Проверено с помощью программы ILSpy и до сих пор не реализовано с 4.0 – Recep