选择Windows运行时组件与可移植代码库

Jer*_*xon 6 portable-class-library windows-8 windows-runtime windows-phone-8

在Windows Phone 8和Windows 8之间共享代码时,开发人员的两个核心选项是:1)Windows运行时组件和2)门户类库.

Windows运行时组件使用WinRT,可以投影到所有支持的语言中.在不同平台上使用时,它们需要在单独的项目(二进制文件)中链接文件.但是,它们共享90%的可用WinRT API.

可移植类库是BCL的一个子集(有时是重要的子集),它具有跨平台的二进制兼容性.它们可用于WinRT应用程序,也可用于其他项目类型,如Silverlight,Xbox等.

当开发人员选择"共享策略"时,哪种项目类型是在Windows Phone 8和Windows 8之间执行最佳作业共享代码的首选技术?谢谢.

Mar*_*han 3

如果您想在 Windows Phone 8 和 Windows 8 之间共享代码,则不能使用 Windows 运行时组件,因为 Windows 8 使用的组件不同,Windows Phone 8 的组件也不同,并且它们不可互换。
我会选择使用可移植类库来获取一些简单的通用库,或者通过链接和 #if WP8 编译指令进行代码共享 - 这确实有效并且比可移植库更强大。
另请记住,大多数外部库(如 MVVM Light)无法在可移植库中引用,因此如果您想使用它们,则必须通过文件引用使用代码共享。

  • 实际上,MVVM Light 有一个 PCL 版本 - NuGet 包是 Portable.MvvmLightLibs,来源在这里:http://mvvmlight.codeplex.com/SourceControl/network/forks/onovotny/MvvmLightPortable/ (3认同)
  • @Martin Suchan - “如果您想在 Windows Phone 8 和 Windows 8 之间共享代码,那么您不能使用 Windows 运行时组件...”取决于您所说的_共享代码_的含义。您无法创建同时针对 WinRT 和 WP8 的**单个** WRC 项目,但您可以为每个项目创建一个**,并且两个项目都可以引用相同的 C/C++ 源代码。 (2认同)