<p>I am trying to dynamicaly compile code using CodeDom. I can load other assemblies, but I cannot load System.Data.Linq.dll.  I get an error:</p>

<p>Metadata file 'System.Data.Linq.dll' could not be found</p>

<p>My code looks like:</p>

<pre><code>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");
</code></pre>

<p>Any ideas?           </p>

That may be because this assembly is stored in a different location than mscorlib is.  It should work if you provide a full path to the assembly.  The most convenient way to get the full path is to let the .NET loader do the work for you.  I would try something like this:
```
```
compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);
```
```