Domanda

Sto cercando di compilare dinamicamente del codice VB nel mio progetto C # e sto riscontrando un problema con VBCodeProvider. Non sembra onorare il flag OptionInfer che sto inserendo nel dizionario providerOptions.

Il mio codice è simile al seguente:

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

Ho impostato il mio CompilerParameters.TreatWarningsAsErrors su True e ho visualizzato il seguente errore:

  

Dichiarazione delle variabili senza un 'As'   clausola; tipo di oggetto assunto.

Tuttavia, tutto va bene quando inserisco l'opzione "Infer On On" testo nella parte superiore del mio codice sorgente dinamico.

Qualcuno può far luce? Sto usando la chiave o il valore providerOptions errati? C'è qualche altra impostazione da qualche altra parte?

È stato utile?

Soluzione

Per mancanza di risposte, ho deciso di esaminare Reflector per vedere cosa stava succedendo e si scopre che CompilerVersion sembra essere l'unica opzione del provider a cui viene fatto riferimento (nel metodo RedistVersionInfo.GetCompilerPath).

Sono stato in grado di far funzionare l'esempio utilizzando invece il membro CompilerParameters.CompilerOptions.

Se esiste È un modo per farlo, sono tutto orecchie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top