2008-09-13 2 views
1

Я пытаюсь динамически компилировать код с помощью CodeDom. Я могу загрузить другие сборки, но я не могу загрузить System.Data.Linq.dll. Я получаю сообщение об ошибке:Не удается загрузить System.Data.Linq.dll для CodeDom

файл метаданных 'System.Data.Linq.dll' не может быть найден

Мой код выглядит следующим образом:

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"); 

Любые идеи?

+1

Изменить запрос: пожалуйста, исправьте заголовок. – 2008-09-14 12:41:44

ответ

3

Возможно, это связано с тем, что эта сборка хранится в другом месте, кроме mscorlib. Он должен работать, если вы предоставите полный путь к сборке. Самый удобный способ получить полный путь - позволить загрузчику .NET выполнять эту работу за вас. Я хотел бы попробовать что-то вроде этого:

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

Это может быть глупый ответ, но вы уверены, что код выполняется на компьютере с .NET Framework 3.5?

+0

Я уверен, что он. У меня такая же ошибка, и у меня есть как .NET 3.5, так и .NET 4. :) – 2010-04-18 04:32:46

Смежные вопросы