2008-09-13 53 views
1

我想動態地使用CodeDom編譯代碼。我可以加載其他程序集,但我無法加載System.Data.Linq.dll。我得到一個錯誤:無法加載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"); 

任何想法?

+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