c# - WinRT 和 DLL : What exactly am I allowed to use?

标签 c# dll windows-runtime json.net html-agility-pack

我不太清楚,所以我希望这里有人知道答案。我使用的是 C# Json.Net 和 C# HtmlAgilityPack,两者都是从“任何 CPU”的源代码构建的。我注意到这两个都包含使用引用程序集的指令,这些程序集似乎在 Metro 中不可用,但它们都构建得很好。

如果我引用它们,这是否意味着我的应用程序将调用非托管代码?

究竟是什么导致对非托管代码进行 thunking?

为什么允许 DLL 引用 WinRT 无法使用的程序集,而我的应用则不能?

这会导致 Windows 应用商店审批流程失败吗?

我需要担心的应用程序中包含的 DLL 的一般规则是什么?

提前致谢!

最佳答案

开发面向 WinRT 的应用时,应用应仅使用 Windows 8 WinRT 中提供的 API。 API 在 WinMD 文件中定义。如果应用程序使用桌面 API,那么它将在 Windows 应用商店审批过程中被拒绝。

想象一下这个场景。您开发了一个在桌面模式(客户端配置文件)中使用 .NET DLL 的 WinRT 应用程序。该应用程序部署在Windows商店中,用户在ARM平板电脑上下载它。应用程序将崩溃,因为它在 ARM 设备上没有桌面(客户端).NET DLL。

因此,这给我们带来了一个问题:在为 WinRT 开发应用程序时可以使用哪些 .NET 类。文章http://kishore1021.wordpress.com/2012/08/06/what-is-portable-class-library-project-in-visual-studio-2012-net-4-5/列出了可用于 WinRT 应用程序开发的 .NET 类。

关于c# - WinRT 和 DLL : What exactly am I allowed to use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243208/

相关文章:

C# Assembly.LoadFrom(myNetworkPath) 抛出 FileLoadException

c# - 为什么我的 C++ 互操作可以在 .Net 4.5 上运行,但不能在 4 上运行

c# - 在 Windows Phone 8.1 中保存前旋转图像

c# - 如何调整 DatagramSocket.MessageReceived 以与异步/等待一起使用?

C# Process.exited 在窗口关闭之前不会被调用

c# - 如何在不删除文件的情况下清除文本文件?

delphi - Delphi DLL 中的表单在循环更新时会导致访问冲突和/或崩溃

windows - AppContainer完整性级别

c# - 在 C# 中处理粘贴事件

c# - C# 中 default(IInterface) 的用途