Pergunta

Estou tentando compilar código dinamicamente usando CodeDom.Posso carregar outros assemblies, mas não consigo carregar System.Data.Linq.dll.Eu recebo um erro:

O arquivo de metadados 'System.Data.Linq.dll' não foi encontrado

Meu código se parece com:

CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");
compilerParams.ReferencedAssemblies.Add("System.Data.Linq.dll");

Alguma ideia?

Foi útil?

Solução

Isso pode ocorrer porque esse assembly está armazenado em um local diferente do mscorlib.Deve funcionar se você fornecer um caminho completo para a montagem.A maneira mais conveniente de obter o caminho completo é deixar o carregador .NET fazer o trabalho para você.Eu tentaria algo assim:

compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);

Outras dicas

Esta pode ser uma resposta boba, mas você tem certeza de que o código está sendo executado em uma máquina com .NET Framework 3.5?

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