VBCodeProvider不尊重providerOptions中的OptionInfer?

时间:2009-06-23 22:41:38

标签: c# vb.net dynamic-compilation vbcodeprovider

我正在尝试在我的C#项目中动态编译一些VB代码,我遇到了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,我收到以下错误:

  

没有'As'的变量声明   条款;假定的对象类型。

但是,当我在动态源代码的顶部放置“Option Infer On”文本时,一切都很顺利。

任何人都能解开一些光明吗?我使用了错误的providerOptions键还是值?在其他地方还有其他设置吗?

1 个答案:

答案 0 :(得分:1)

由于缺乏答案,我决定通过Reflector查看发生了什么,结果发现CompilerVersion似乎是唯一被引用的提供者选项(在RedistVersionInfo.GetCompilerPath方法中)。

我可以通过使用CompilerParameters.CompilerOptions成员来使示例工作。

如果 IS 是一种方法,我会全力以赴。