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

Windows phone 7 如何组织Windows和Windows Phone项目以重用现有代码库?,windows-phone-7,.net-4.0,.net-3.5,projects-and-solutions,windows-phone-8,Windows Phone 7,.net 4.0,.net 3.5,Projects And Solutions,Windows Phone 8,首先,我想说的是,我已经阅读了以下两个讨论: 和 . 所以,我知道Portable Class Library项目类型,这可能是我问题的答案。但这不是我的问题的答案 问题 我的项目中有一些旧的代码库WindowsClassLibraryNetFw35。我需要这个项目是一个类库的目标.NETFramework 3.5。其原因是,一些依赖的应用程序部署在未安装.NET Framework 4+的客户机器上。不幸的是,我不能强迫我的客户升级他们的环境 现在,我为Windows 8和Windows Ph

首先,我想说的是,我已经阅读了以下两个讨论: 和 . 所以,我知道Portable Class Library项目类型,这可能是我问题的答案。但这不是我的问题的答案

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

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

问题:
重组项目类型以支持新旧项目的最佳方式是什么?

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

创建两个不同的项目,一个是Windows Phone,另一个是Windows应用商店应用程序。将一个文件添加到一个项目中,然后将另一个文件添加到另一个项目中。这意味着您在两个不同的项目之间有一个源文件,但将使用各自的运行时工具进行编译。然后,您可以在代码中执行以下操作:

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

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

谢谢!这个解决方案对我来说并不新鲜。问题是,在我创建的每个新项目中都没有简单的方法来引入这些文件。添加这些文件需要很多时间,对吗?也许我可以创建一个
*.csproj
模板,其中包含库项目中的所有文件。这种做法也有问题。如果我向库项目添加了一个新文件,我需要在每个已经存在的客户机项目中添加一个指向该文件的链接,并更新
csproj
模板。我想说的是,似乎有很多枯燥无味的行为让我在开发过程中感到不安。@keykeeper不幸的是,我认为这就是全部。您可能可以开发一个工具来辅助此过程,但“解决方案”是使用.NET 4.0和PCL。我不能使用PCL,因为我的一些旧项目以.NET Framework 3.5为目标,我无法强制客户端将其更新到版本4。