Não é possível carregar System.Data.Linq.dll para CodeDom
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?
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