簡體   English   中英

如何在VS2008中的項目目標3.5中引用框架4.0 dll

[英]How to reference framework 4.0 dll in project targetting 3.5 in VS2008

我在VS2010中使用4.0框架創建了一個DLL(是的,它是完整的4.0,而不是客戶端配置文件)。 我想在VS2008項目中引用它(這意味着我無法將引用項目重新定位到4.0,即使我想要)並且將該項目升級到VS2010也不是一個選項。

我理解為什么在3.5個項目中引用4.0'項目'存在問題,但我不明白為什么在3.5項目中引用4.0 dll時會出現問題。 而且據我所知,這可能不是問題,但我似乎無法想到它還能是什么。

我正在嘗試使用Fasterflect(http://fasterflect.codeplex.com/),它在我的3.5項目中嚴重依賴4.0功能(同樣,我的公司還沒准備好為VS2010支付這筆錢,所以我無法改變那)。 一開始似乎一切正常,直到我嘗試編譯然后關於Fasterflect程序集的錯誤沒有被彈出的錯誤。 所以我下載了實際的源代碼,簽名,重新編譯它,並引用了我新簽名的程序集。 問題是現在它顯示警告符號並說:

已解決的文件具有錯誤的圖像,沒有元數據,或者無法訪問。 無法加載文件或程序集“C:.... \\ Fasterflect.dll”或其依賴項之一。 此程序集由比當前加載的運行時更新的運行時構建,無法加載。

我嘗試按照這里建議的答案: http//social.msdn.microsoft.com/Forums/en/clr/thread/36b1a209-55d5-4323-91dc-0919ba2e1d03 但是,當我這樣做時,我收到另一條錯誤消息:

找不到元素'supportedRuntime'的架構信息。 C:.... \\ DynamicSql \\ App.config中

我似乎無法想出這個錯誤。

當然有一些方法讓我在VS2008中使用這個DLL?

當您創建面向特定版本框架的項目時,您將告訴編譯器安裝項目所運行的計算機的框架庫和運行時版本。 例如,3.5中的System.dll和4.0中的System.dll不一樣,就像為什么2.0和3.5中的System.dll不一樣。

理論上,您無法保證向前兼容性(3.5引用4.0),因為4.0程序集可能使用3.5中不存在的API。 同樣,您無法保證4.0中的2.0向后兼容性,因為某些API可能已被棄用和刪除。

在實踐中,4.0具有足夠的向后兼容性3.5,它們允許您在4.0應用程序中引用3.5個組件,但有一些警告(有時需要在配置文件中添加指令 ,因為4.0中的程序集加載從3.5更改)。 不幸的是,由於4.0引入了大量新API,因此3.5與4.0沒有太多的向前兼容性,所以我認為你不能從3.5引用4.0程序集。

您可能正是因為這個原因而看到架構信息異常。 “supportedRuntime”是.NET 4.0引入的配置元素。 但是,由於您在3.5中引用了程序集,因此解析配置文件的.NET 3.5版本的System.Configuration無法識別該元素,從而引發異常。

唯一的方法可能是(1)更改源並重新編譯,將所有API調用修復為在3.5中不起作用的4.0庫,或者(2)執行相同的操作,但在IL級別,生成新程序集(您可以使用al.exe執行此操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM