4

我有一个面向 .net 4 的类库,并通过 Mono 在不同平台上使用。我现在想移植它以供 Windows 8 使用。我知道名称一直在变化,但目前在 VS2012 中称为“类库(Windows 商店应用程序)”。
我最初尝试将所有内容移植到“可移植类库”,但事实证明这太困难了,因为有些东西根本没有适用于所有目标平台的通用方法,而其他受支持的东西根本没有可用于编译器。
因此,我创建了一个 Windows Store 类库并创建了指向我的标准类库的现有文件的链接,因此更新一次将同时更新两者。我计划使用预处理指令在两个类库 EG 之间进行更改

#if NETFX_CORE
    Task.Delay(someTime);
#else
    new System.Threading.ManualResetEvent(false).WaitOne(sometime);
#endif

我的问题是,如果这种方法似乎是一种明智的方法?我有相同的默认命名空间和程序集名称。这会对我的编译器造成问题吗?这些程序集面向不同的平台,因此永远不会在同一个应用程序中一起使用,但它们都位于 Visual Studio 中的同一个解决方案中。

4

2 回答 2

0

总的来说,是的,这应该有效。该特定案例是一个糟糕的示例,因为这两种实现的功能非常不同,说明您可能需要重新考虑设计的某些方面。对于存在类似API 交换(具有类似语义)的情况,我个人倾向于将差异移到辅助方法后面,因此我的“主”代码不需要担心这一点 - 只是辅助代码。反射将是一个很好的例子(反射的变化令人讨厌)。

目标平台不同的两个项目应该没问题。我偶尔会遇到 IDE 故障,它抱怨临时文件。我认为这是由于项目之间共享文件。我已经在connect上登录了

于 2012-08-19T19:01:45.960 回答
0

尝试

Task.Delay(msDelay).Wait()
于 2013-03-15T15:27:15.363 回答