無法解析使用可移植類庫的程序集
我在最終使用者機器上遇到了彙編解析問題,我相信這與使用可移植類庫有關….
我有一個最初用 Visual Studio 2010 編寫的 .NET 4.0 應用程序。最近我們升級到 Visual Studio 2012,並創建了一些可移植類庫項目。我認為我們現在不需要這些功能,但我們也在建構一個可能從這些庫中受益的 Windows 8 應用商店應用程序。
當我編譯我的項目時,可移植庫功能究竟是做什麼的?我希望它允許我在不同的框架上執行它而無需修改或重新編譯。
當我查看反射器dotPeek 中的庫時,它顯示 Platform 屬性為:
.NET可移植,版本=v4.0,配置文件=配置文件5
並且參考似乎是2.0-ish:
mscorlib,版本=2.0.5.0
系統,版本=2.0.5.0
System.Runtime.Serialization,版本=2.0.5.0
當我在這個最終使用者的機器上執行應用程序時,我在日誌文件中看到一個錯誤:
無法載入文件或程序集,‘System.Core,版本 = 2.0.5.0 …’
Google搜尋 System.Core 2.0.5.0 似乎是指 SilverLight——它似乎是目標框架之一。
本機沒有安裝 Visual Studio,但有 .NET 4.0(4.0.3 更新)
有什麼我應該做不同的編譯,我應該在我的依賴項中調查的東西,或者我應該尋找在最終使用者機器上安裝的東西嗎?2.0.5.0 指的是什麼?
對於 .NET 4,您需要更新 ( KB2468871 ) 才能使可移植類庫正常工作。來自知識庫文章:
特色 5
對支持可移植庫的更改。這些更改包括 API 更新和活頁夾修改。此更新使 CLR 能夠成功綁定到可移植庫,以便單個 DLL 可以在 .NET Framework 4、Silverlight、Xbox 或 Windows Phone 上執行。此更新將公共 Silverlight API 添加到同一位置的 .NET Framework 4。API 簽名將在整個平台上保持一致。所有修改都是 100% 兼容的,不會破壞任何現有程式碼。
另請參閱MSDN 可移植類庫文件的“部署 .NET Framework 應用程序”部分。
**編輯:**實際上,如果機器安裝了您提到的 .NET 4.0.3,那就足夠了。您可以仔細檢查以確保它確實已安裝嗎?