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



我在最终用户机器上的程序集解析方面遇到问题,我认为这与使用可移植类库有关。。。。

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

当我编译我的项目时,可移植库功能到底做什么?我希望它允许我在不同的框架上运行它,而无需修改或重新编译。

当我查看reflectordotPeek中的库时,它将平台属性显示为:

.NETPortable,版本=v4.0,配置文件=配置文件5

参考文献似乎是2.0-ish:

mscorlib,版本=2.0.5.0

系统,版本=2.0.5.0

System.Runtime.Serialization,版本=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指的是什么?

对于.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,那就足够了。你能仔细检查一下以确保它真的安装好了吗?

最新更新