我要说的全部拳头我已经阅读了这两个讨论: How to organize Windows Phone code base to target both 7.x and 8 platforms和 Windows 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项目(请参见屏幕截图) 。
为了能够支持我的新旧项目,重组项目类型的最佳方法是什么?
答案 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项目的“构建”选项卡上添加相应的编译器常量即可。这是一个更为俗气的解决方案,但有时它是唯一有效的方法。