Я пытаюсь динамически компилировать код с помощью CodeDom. Могу загрузить другие сборки, но не могу загрузить System.Data.Linq.dll. Я получаю сообщение об ошибке:
Не удалось найти файл метаданных 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");
Есть идеи?





Это может быть связано с тем, что эта сборка хранится в другом месте, чем mscorlib. Он должен работать, если вы укажете полный путь к сборке. Самый удобный способ получить полный путь - позволить загрузчику .NET делать всю работу за вас. Я бы попробовал что-то вроде этого:
compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);
Это может быть глупый ответ, но уверены ли вы, что код работает на машине с .NET Framework 3.5?
Я уверен, что это так. У меня точно такая же ошибка, и у меня .NET 3.5 и .NET 4. :)
запрос на редактирование: исправьте заголовок.