这对我来说并不是很清楚,所以我希望有人知道答案。我使用的是C#Json.Net和C#HtmlAgilityPack,它们都是根据“Any CPU”的来源构建的。我注意到这两个都包括使用引用程序集的指令,这些程序集似乎在Metro中不可用但它们都构建良好。
如果我引用它们,这是否意味着我的应用程序会破坏非托管代码?
究竟是什么导致thunking到无人编码?
为什么允许DLL引用WinRT不可用的程序集而我的应用程序不是?
这会导致Windows商店批准过程失败吗?
我需要担心我的应用程序中包含的DLL的一般规则是什么?
提前致谢!
答案 0 :(得分:4)
在开发针对WinRT的应用时,应用应该只使用Windows 8 WinRT中提供的API。 API是在WinMD文件中定义的。如果应用程序使用桌面API,那么在Windows商店批准过程中它将被拒绝。
想象一下这个场景。您开发了一个WinRT应用程序,它使用桌面模式的.NET DLL(客户端配置文件)。该应用程序部署在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类。
答案 1 :(得分:0)
将所有开源项目依赖项更改为目标WinRT。看看WinRT中是否缺少某些方法/类,因此代码无法编译。尝试找到替代方法/类。
如List.FindAll(),更改为Linq Where()