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

有帮助吗?

解决方案

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top