2009-06-23 148 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