【问题标题】:Windows Phone 8 - Native and CLR RuntimeWindows Phone 8 - 本机和 CLR 运行时
【发布时间】:2013-08-10 17:53:56
【问题描述】:

我刚刚开始为 Windows Phone 8 开发应用程序,我对在这种设备上运行的不同运行时环境有几个问题。我可能没有正确搜索网络,因为我无法找到任何我完全理解的答案或提供我需要的详细信息(如果您有任何链接,非常感谢任何分享!)。

1) 来自 C++ 和 C# 桌面世界,我真的很想知道在 Windows Phone 8 操作系统上实际运行的本机和 CLR 运行时的“种类”。例如,桌面上最常见的 C++ 运行时是 Visual C++ 编译器链接到的 MSVCR,或者是成熟的 .NET 框架 CLR 实现,许多即 C# 应用程序正在引用。 Windows CE 系统有它的 mscorlib resp。 .NET 紧凑型框架。这些事情对我来说是完全清楚的。

但据我所知,Windows Phone 8 操作系统在 WinRT 和 CoreCLR 上运行(我只是在某种程度上听说过 Silverlight)。这是正确的说法吗?

2) 如果我的第一个假设是正确的:我有一个 C# 应用程序,它 P/Invokes 本机 C++ DLL - 它们的代码都可以在 Dekstop-Windows 和 WindowsCE 之间移植(其中 C++ DLL 被编译为 x86/ x64/ARM,取决于目标系统)。我是否能够以某种方式仅“定位” WP8 并在这样的设备上运行该应用程序而无需进行严重的代码更改?或者必须有一个额外的 WP8 端口?在不了解系统运行环境的情况下,我自己真的无法回答这个问题:(

我无法完全掌握所有这些世界之间的兼容性和差异,尤其是因为我对 WinRT/CoreCLR 以及它们是否真的在 Windows Phone 8 中发挥作用了解不多。我知道这些都是完全不同的技术,别担心,但我想知道它们在整个画面中的位置。有时我对微软抛出的所有不同的框架和技术感到不知所措,我希望这是可以理解的。

感谢您的任何回答!

【问题讨论】:

    标签: .net windows-phone-8 windows-runtime windows-mobile


    【解决方案1】:

    微软很少透露有关操作系统本身的细节。除了它是一个商业秘密之外,它会弄巧成拙,因为这在移动平台上发展迅速。您应该只关注提供的 api,这样可以确保您获得商店认证,并希望您的应用在以后的手机版本上仍然有效。

    WinRT 就是那个 api,以及一个少量但简短的原生 api 函数列表。您确实会得到源自 Silverlight 的 CoreCLR,它是桌面 CLR 的精简版。它包括语言投影,可让您轻松从托管应用中使用 WinRT。

    P/Invoke 受支持。在实践中这不是问题,除了可移植性之外,Phone8 支持开发通过 WinRT 公开其类的本机 C++ 库。可以在 WinRT 环境中使用的任何语言中使用,例如 C#、VB.NET、C++ 和 Javascript。您可以使用 C++、Windows Phone、Windows Phone 运行时组件项目模板来启动这样的库。否则,您必须遵守相同的 api 限制。

    【讨论】:

    • 感谢您的回答,真的帮了大忙!我还得到了一些其他信息(但基本上是你已经告诉我们的),WinRT 是 WP8 的主要编程 api(它使用一种特殊的 COM),它直接位于 NT api 之上,如 WinAPI,用于只有一小部分可供开发人员使用。此外,作为 WPF 的一种继承者,“Windows 运行时 XAML 框架”用于 UI。 MS 推荐使用 C++/CX,但 CoreCLR 也可以使用这些框架。
    猜你喜欢
    • 2013-01-22
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多