2009-06-23 147 views
1

我想在我的C#项目中动态编译一些VB代码,并且遇到了VBCodeProvider的问题。它似乎并没有遵守我放入providerOptions Dictionary中的OptionInfer标志。VBCodeProvider不遵守providerOptions中的OptionInfer?

我的代码如下所示:

var providerOptions = new Dictionary<string, string>(); 
providerOptions.Add("CompilerVersion", "v3.5"); 
providerOptions.Add("OptionInfer", "True"); 
var provider = new VBCodeProvider(providerOptions); 

设置我CompilerParameters.TreatWarningsAsErrors为True,我得到以下错误:

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

然而,一切都很好,当我把“选项推断“文本在我的动态源代码的顶部。

任何人都可以点亮一下吗?我使用错误的providerOptions键或值?其他地方还有其他设置吗?

回答

1

由于缺乏答案,我决定翻阅Reflector来查看正在发生的事情,结果证明CompilerVersion似乎是被引用的唯一提供者选项(在RedistVersionInfo.GetCompilerPath方法中)。

我能够通过使用CompilerParameters.CompilerOptions成员来获得工作示例。

如果有IS一个办法做到这一点,我所有的耳朵。

+0

使用ILSpy进行检查,但仍未使用4.0 – Recep 2011-04-26 15:01:14