1

我正在尝试在我的 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 键或值?其他地方有其他设置吗?

4

1 回答 1

1

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

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

如果有办法做到这一点,我会全力以赴。

于 2009-06-24T23:46:27.470 回答