1

首先我想说的是,我已经阅读了这两个讨论: 如何组织 Windows Phone 代码库以同时针对 7.x 和 8 平台Windows Phone 7/WPF - 共享代码库。所以,我知道 Portable Class Librariy 项目类型,这可能是我的问题的答案。但这不是我的情况的答案。

问题

我的项目中有一些旧代码库WindowsClassLibraryNetFw35。我需要这个项目成为一个面向 .NET Framework 3.5 的类库。原因是一些依赖应用程序部署在客户的机器上,而这些机器没有安装 .NET Framework 4+。不幸的是,我不能强迫我的客户升级他们的环境。

现在我为 Windows 8 和 Windows Phone 8 创建新项目。如您所知,当我尝试引用我的旧库时,Windows Phone 8 项目将失败,因为它不是兼容的 Windows Phone 项目(见屏幕截图)。 在此处输入图像描述

问题

重组我的项目类型以便能够支持我的旧项目和新项目的最佳方法是什么?

4

1 回答 1

2

我的目标仍然是让 PCL 工作,但如果失败,您可以在两个不同的项目中使用相同的代码。

创建两个不同的项目,一个是 Windows Phone,另一个是 Windows Store App。向其中添加一个文件,然后将该文件添加为另一个项目的链接。这意味着您在两个不同的项目之间有一个源文件,但将使用各自的运行时工具进行编译。然后你可以在你的代码中做这样的事情:

void Foo()
{
    #if WinRT
        //WinRT specific code here
    #elif WindowsPhone
        //Silverlight specific code here
    #endif
}

只需在 Windows Phone 和 WinRT 项目的 Build 选项卡上添加相应的编译器常量。这是一个更俗气的解决方案,但有时它是唯一有效的方法。

于 2012-12-30T18:36:16.153 回答