【问题标题】:Unable to resolve assemblies that use Portable Class Libraries无法解析使用可移植类库的程序集
【发布时间】:2012-12-14 01:11:42
【问题描述】:

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

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

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

当我查看 reflector dotPeek 中的库时,它显示 Platform 属性为:

.NETPortable,Version=v4.0,Profile=Profile5

而且引用似乎是 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指的是什么?

【问题讨论】:

  • 2.0.5.0 是 PCL 的目标版本,它被框架重新映射。 Profile5 = 框架 4.0 和存储。远景:商店应用程序需要 .NET 4.5。注意 4.0 的客户端配置文件

标签: .net-4.0 portable-class-library


【解决方案1】:

对于 .NET 4,您需要更新 (KB2468871) 才能使可移植类库正常工作。来自KB Article

功能 5

对支持可移植库的更改。这些更改包括 API 更新和活页夹修改。此更新使 CLR 能够绑定 成功移植到可移植库,以便单个 DLL 可以在 .NET Framework 4、Silverlight、Xbox 或 Windows Phone。 此更新将公共 Silverlight API 添加到 .NET Framework 4 中 同一个位置。 API 签名将保持一致 该平台。所有修改都是 100% 兼容的,并且将 不要破坏任何现有的代码。

另请参阅MSDN Portable Class Library Documentation 的“部署 .NET Framework 应用程序”部分。

编辑:实际上,如果机器安装了您提到的 .NET 4.0.3,那就足够了。您能否仔细检查以确保它确实已安装?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多