无法解析使用可移植类库的程序集

bry*_*ook 15 .net-4.0 portable-class-library

我在最终用户机器上遇到装配解决问题,我相信它与使用便携式类库有关....

我有一个最初用Visual Studio 2010编写的.NET 4.0应用程序.最近我们升级到Visual Studio 2012,我们创建了一些可移植类库的项目.我不认为我们现在需要这些功能,但我们也在构建可能从这些库中受益的Windows 8 Store应用程序.

当我编译项目时,便携式库功能到底有什么作用?我希望它允许我在不修改或重新编译的情况下在不同的框架上运行它.

当我在反射器 dotPeek中查看库时,它将Platform属性显示为:

.NETPortable,版本= 4.0版,档案=规范5

参考文献似乎是2.0-ish:

mscorlib,版本= 2.0.5.0

系统,版本= 2.0.5.0

System.Runtime.Serialization,Version = 2.0.5.0

当我在这个最终用户的机器上运行应用程序时,我在日志文件中看到一个错误:

无法加载文件或程序集,'System.Core,Version = 2.0.5.0 ......'

谷歌搜索System.Core 2.0.5.0似乎是指SilverLight - 它似乎是目标框架之一.

本机没有安装Visual Studio,但有.NET 4.0(4.0.3更新)

有什么我应该做的不同编译,我应该调查我的依赖项或我应该在最终用户机器上安装的东西?2.0.5.0引用了什么?

Dan*_*ted 18

对于.NET 4,您需要一个可移植类库的更新(KB2468871)才能工作.来自KB文章:

特色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,那就足够了.你能仔细检查以确保它实际安装?