2012-06-04 247 views
0

添加.NET的DLL使用的CodeDOM我有這樣的事情:爲什麼我不能在運行時

CompilerParameters parameters = new CompilerParameters(); 
parameters.ReferencedAssemblies.Add("System.dll"); 
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll"); 
parameters.ReferencedAssemblies.Add("System.Data.Linq.dll"); 
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll"); 
parameters.ReferencedAssemblies.Add("System.Core.dll"); 

,當我運行一個程序,這是我得到的最後三個DLL的錯誤,前兩個(System.DLL和System.Windows.Forms.DLL)沒有問題和錯誤,但只要我添加最後三行來加載這些DLL,我就會得到類似於圖片中的錯誤。 所以很奇怪和煩人,找不到解決方法。

謝謝。

enter image description here

+0

我猜你的編譯器安裝程序是在.NET 3.0或更舊的版本(3.5中添加了linq)。關閉我的頭,我不知道如何改變它(也許你可以添加完全合格的程序集名稱和版本號?) –

+0

@ChrisSinclair:我已經在Visual Studio中將目標平臺設置爲4.0。它不僅僅是Linq,即使是最後一個是System.Core,它也給出了類似的錯誤。 – Bohn

回答

0

哦哇!這很棘手!

它不關心Visual Studio設置的目標平臺是什麼,它看起來是它自己的CodeProvider類。以前我使用的是default constructor。但它也有另一個構造函數,它需要一個Dictionary參數。在這個參數中我們指定應該使用什麼版本的.NET。所以,而不是僅僅創建一個新的CodeProvider對象,我應該這樣做:

Dictionary<string, string> compilerInfo = new Dictionary<string, string>(); 
    compilerInfo.Add("CompilerVersion", "v3.5"); 
    CSharpCodeProvider codeProvider = new CSharpCodeProvider(compilerInfo); 

現在它的工作。

相關問題