如何组织Windows和Windows Phone项目以重用现有的代码库?

时间:2012-12-30 18:11:23

标签: windows-phone-7 .net-4.0 .net-3.5 projects-and-solutions windows-phone-8

我要说的全部拳头我已经阅读了这两个讨论: How to organize Windows Phone code base to target both 7.x and 8 platformsWindows Phone 7/WPF - Sharing a codebase。所以,我知道Portable Class Librariy项目类型可能是我的问题的答案。但这不是我的理由的答案。

问题

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

现在我为Windows 8和Windows Phone 8创建新项目。如您所知,当我尝试引用旧库时,Windows Phone 8项目将失败,因为它不是兼容的Windows Phone项目(请参见屏幕截图) 。 enter image description here

问题

为了能够支持我的新旧项目,重组项目类型的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我仍然希望让PCL正常工作,但如果失败,你可以在两个不同的项目中使用相同的代码。

创建两个不同的项目,一个是Windows Phone,另一个是Windows应用商店应用。将文件添加到一个文件,然后将其他文件as a link添加到另一个项目。这意味着您在两个不同的项目之间有一个源文件,但将使用每个相应的运行时工具进行编译。然后你可以在你的代码中做这样的事情:

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

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