2009-06-23 5 views
1

Ich versuche, VB-Code in meinem C# -Projekt dynamisch zu kompilieren, und ich habe ein Problem mit dem VBCodeProvider. Es scheint nicht das OptionInfer-Flag zu honorieren, das ich in das providerOptions-Wörterbuch einfüge.VBCodeProvider nicht OptionInfer in ProviderOptions?

Mein Code sieht wie folgt aus:

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

ich meine CompilerParameters.TreatWarningsAsErrors auf True gesetzt, und ich erhalte den folgenden Fehler:

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

jedoch alles gut ist, wenn ich die put " Option Iner On "Text oben in meinem dynamischen Quellcode.

Kann jemand etwas Licht abwerfen? Verwende ich den falschen providerOptions-Schlüssel oder Wert? Gibt es woanders noch etwas anderes?

Antwort

1

Aus Mangel an Antworten, entschied ich mich, durch Reflector zu gehen, um zu sehen, was vor sich ging, und es stellt sich heraus, dass CompilerVersion die einzige Anbieteroption ist, die (in der RedistVersionInfo.GetCompilerPath-Methode) referenziert wird.

Ich konnte das Beispiel mit dem CompilerParameters.CompilerOptions-Member stattdessen arbeiten.

Wenn es IST ein Weg, es zu tun, bin ich ganz Ohr.

+0

Mit ILSpy überprüft und es ist noch nicht mit 4.0 implementiert – Recep