使库WinRT兼容时最大的挑战是什么?

时间:2012-11-12 04:27:04

标签: .net microsoft-metro windows-runtime

我有一个带有核心功能的dll,我不想在ASP.MVC应用程序和Metro应用程序中使用它。因此,我使用可移植库与.NET 4.0和.NET for Widows商店应用程序兼容。正如预期的那样构建失败。 主要原因是:

  1. Serializable属性http://social.msdn.microsoft.com/Forums/en/winappswithcsharp/thread/b2ca4ac8-326d-48b0-bb45-965459a99808 - 痛苦的惊喜
  2. System.Reflection.Emit namespace http://geekswithblogs.net/mbrit/archive/2012/06/05/say-goodbye-to-system.reflection.emit-any-dynamic-proxy-generation-in-winrt.aspx
  3. FileInfo类的用法。非常期望所有文件系统调用都不起作用
  4. 我知道所有的UI类都不会被编译。

    所以我的问题是 如果我在.net 4.0和WinRT之间共享我的库,我必须避免哪些命名空间和类?

    更新 以下是类和命名空间http://msdn.microsoft.com/en-us/library/windows/apps/br230302%28v=vs.110%29.aspx#convert

    中的更改的完整列表

1 个答案:

答案 0 :(得分:2)

如果您要编写要在.NET框架和Windows应用商店应用中重复使用的新代码,最好立即开始将代码编写为可选择这两个目标平台的可移植类库。这样,您将只能使用在两个平台上都可用的类和方法(Intellisense也可以按预期工作)。

您可以找到每个支持的平台here的可用API的概述。

对于通过可移植类库不支持的API,因为它们在概念上不同但仍然以某种方式可用(文件IO是一个很好的示例),您可以使用抽象/间接模式以不同的方式为它们实现每个平台。 Here对这种方法有很好的解释。