Question

J'essaie de compiler de manière dynamique du code VB dans mon projet C # et je rencontre un problème avec VBCodeProvider. Il ne semble pas que le drapeau OptionInfer que je mets dans le dictionnaire providerOptions soit respecté.

Mon code ressemble à ceci:

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

Je règle mes CompilerParameters.TreatWarningsAsErrors sur True et j'obtiens le message d'erreur suivant:

  

Déclaration de variable sans 'As'   clause; type d'objet supposé.

Cependant, tout va bien lorsque je mets l'option "Option Infer On". texte en haut de mon code source dynamique.

Quelqu'un peut-il nous éclairer? Est-ce que j'utilise la mauvaise clé ou valeur de providerOptions? Y a-t-il un autre paramètre quelque part ailleurs?

Était-ce utile?

La solution

Faute de réponse, j’ai décidé de parcourir Reflector pour voir ce qui se passait. Il s’avère que CompilerVersion semble être la seule option de fournisseur référencée (dans la méthode RedistVersionInfo.GetCompilerPath).

J'ai pu utiliser l'exemple en utilisant plutôt le membre CompilerParameters.CompilerOptions.

Si EST le moyen de le faire, je suis tout ouïe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top