1

我刚刚开始为 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 中发挥作用。我知道这些都是完全不同的技术,不用担心,但我想知道它们在整个画面中的位置。有时我对微软抛出的所有不同的框架和技术感到不知所措,我希望这是可以理解的。

感谢您的任何回答!

4

1 回答 1

4

微软很少透露有关操作系统本身的细节。除了它是一个商业秘密之外,它会弄巧成拙,因为这在移动平台上发展迅速。您应该只关注提供的 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 限制。

于 2013-08-10T19:21:40.440 回答