我正在尝试使用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");
有什么想法吗?
答案 0 :(得分:3)
这可能是因为此程序集存储在与mscorlib不同的位置。如果您提供程序集的完整路径,它应该可以工作。获得完整路径最方便的方法是让.NET加载器为您完成工作。我会尝试这样的事情:
compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);
答案 1 :(得分:0)
这可能是一个愚蠢的答案,但您确定代码是在使用.NET Framework 3.5的计算机上运行的吗?