Pergunta

Estou tentando compilar dinamicamente algum código VB no meu projeto C # e eu estou correndo em um problema com o VBCodeProvider. Ele não parece ser honrar a bandeira OptionInfer que eu estou colocando na providerOptions Dictionary.

Os meus olhares código como este:

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

I meu CompilerParameters.TreatWarningsAsErrors como True, e eu recebo o seguinte erro:

Declaração de variáveis ??sem um 'As' cláusula; tipo de objeto assumido.

No entanto, tudo está bem quando eu coloco o texto "Option Infer On" no topo do meu código fonte dinâmica.

Alguém pode lançar alguma luz? Estou usando a chave providerOptions errados ou valor? Existe alguma outra configuração em algum outro lugar?

Foi útil?

Solução

Por falta de respostas, decidi arado através do refletor para ver o que estava acontecendo, e verifica-se que CompilerVersion parece ser a única opção provedor que é referenciado (no método RedistVersionInfo.GetCompilerPath).

Eu era capaz de obter o exemplo de trabalho usando membro CompilerParameters.CompilerOptions vez.

Se houver é uma maneira de fazê-lo, eu sou todo ouvidos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top