1

我有一个具有核心功能的 dll,我不想在 ASP.MVC 应用程序和 Metro 应用程序中使用它。因此,我从我的 dll 为 Widows 商店应用程序制作了与 .NET 4.0 和 .NET 兼容的便携式库。正如预期的那样,构建失败了。主要原因是:

  1. 可序列化属性http://social.msdn.microsoft.com/Forums/en/winappswithcsharp/thread/b2ca4ac8-326d-48b0-bb45-965459a99808 - 痛苦的惊喜
  2. System.Reflection.Emit 命名空间http://geekswithblogs.net/mbrit/archive/2012/06/05/say-goodbye-to-system.reflection.emit-any-dynamic-proxy-generation-in-winrt.aspx
  3. FileInfo 类的用法。几乎预计所有文件系统调用都不会工作

我知道所有的 UI 类也不会被编译。

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

更新 这里是类和命名空间更改的完整列表http://msdn.microsoft.com/en-us/library/windows/apps/br230302%28v=vs.110%29.aspx#convert

4

1 回答 1

2

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

您可以在此处找到每个受支持平台的可用 API 概览。

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

于 2012-11-12T06:02:19.147 回答