15

我在最终用户机器上遇到了汇编解析问题,我相信这与使用可移植类库有关....

我有一个最初用 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 ...'

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

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

有什么我应该做不同的编译,我应该在我的依赖项中调查的东西,或者我应该寻找在最终用户机器上安装的东西吗?2.0.5.0 指的是什么?

4

1 回答 1

18

对于 .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,那就足够了。您可以仔细检查以确保它确实已安装吗?

于 2012-12-14T04:04:52.720 回答