當A針對.NET 3.5並且B針對.NET 2.0時,Visual Studio 2008確實允許您從程序集B
引用程序集A
。Visual Studio 2010:參考程序集針對高框架版本
Visual Studio 2010不允許使用此功能。完整的問題上MSDN描述:
您可以創建應用程序, 參考項目或組件是 目標不同版本的.NET框架 的。例如,如果您創建的目標爲.NET Framework的客戶端配置文件的 應用程序,該012xx項目可以引用一個程序集,該程序集的目標是.NET Framework 2.0版。 但是,如果你創建 目標的較早版本的.NET框架 的,你不能在項目中的 基準設定爲一個項目 或組裝面向.NET框架 4客戶端配置文件或項目。 NET Framework 4。爲了消除錯誤, 確保 您的應用程序所針對的配置文件與 兼容 或您的 應用程序所引用的程序集所針對的配置文件。
有沒有什麼辦法可以讓VS2010在這方面表現得像VS2008(即允許引用程序集指向更高的框架版本)?
我知道VS 2010行爲背後的原因以及我需要注意的部署注意事項,無需重複說明。
確切的錯誤是:
警告MSB3268:主要參考 「xxx.dll」 無法得到解決,因爲它有 對 框架組件的間接依賴「System.Core程序, 版本= 3.5.0.0,文化=中立, PublicKeyToken = b77a5c561934e089「其中 不能在當前的 目標框架中解決。 「.NETFramework,Version = v2.0」。爲了 解決此問題,請刪除 參考 「xxx.dll」 或重新定位你的應用程序包含 「System.Core程序一個 框架版本,版本= 3.5.0.0, 文化=中立, 公鑰= b77a5c561934e089 」。
我有點不知所措,爲什麼你想這樣做。那麼整個應用程序會不會要求更高版本的框架才能啓動?在這種情況下,將目標版本升級到更高版本沒有意義嗎? – cHao 2010-07-21 11:24:23
這很難解釋,但背後有一個合理的要求。 – 2010-07-21 11:39:59
合理要求:由2.0 ASP.NET站點和3.5 WinForms應用程序共享的業務邏輯彙編(「BL」)。網站使用較舊的Enterprise Library 3.1,WinForms應用程序使用較新的EntLib 5.0。當爲WinForms構建時,BL需要將引用切換到新的EntLib,它們是3.5,但BL仍然需要2.0項目才能與現有的2.0網站一起工作。 VS2008允許通過切換配置來發生這種情況,但VS2010引發上述錯誤,因爲EntLib 5.0期望3.5引用(特別是System.Core)。 – 2011-10-17 14:36:42