如何维护两个sdk版本的Windows手机的代码

时间:2011-11-03 20:16:03

标签: windows-phone-7 windows-phone-7.1

我正在构建一个适用于Windows Phone sdk 7.0和7.1的应用程序,我想为7.1提供一些额外的功能,但我想只保留一个代码库,并且只有在用户手机为7.1时才会显示一些代码。

我读到了Shawn Wildermuth的帖子:http://wildermuth.com/2011/08/23/Maintaining_a_Project_with_Two_Windows_Phone_Versions。但我不知道该如何做“首先,我拿了我原来的项目并创建了两个解决方案文件夹并创建了这里所示的7.1项目”。

有人可以帮忙吗?或提出其他想法?

谢谢。

2 个答案:

答案 0 :(得分:1)

完美的解决方案是预处理器指令

答案 1 :(得分:0)

[2011年11月5日更新:删除了有关Marketplace的过时信息。感谢udpated info @johnforrest]

要做Shawn所描述的内容,请将现有的解决方案与现有的7.0项目一起使用。添加解决方案文件夹并将其命名为“7.0”。将现有的7.0项目移动到该解决方案文件夹中。创建另一个名为“7.1”的解决方案文件夹对于7.0解决方案文件夹中的每个项目,在7.1解决方案文件夹中创建一个新的匹配项目。这些是Shawn的PhonyTools.7.1等等。现在按照他的指示,使用从7.0项目链接的链接文件填充7.1项目。

我发现链接文件是一种祝福和诅咒。如果在一个项目中打开链接文件并对其进行编辑,则Visual Studio不会知道需要重建包含链接文件的其他项目。最近,我发现如果我记得在另一个项目中打开链接文件,我会收到一个警告,说明该文件是在另一个项目中打开的,但是后来VS认识到该文件已经更改并将重建另一个项目

@KevinDTimm建议的预处理程序指令不能单独解决问题,因为对于两种不同类型的项目(7.0和7.1应用程序或库),仍然需要两个不同的项目。此外,不同版本的应用程序将引用不同的相应版本的程序集。

最后,当我们讨论条件编译的主题时,不要忘记Conditional属性,这通常是比使用预处理程序指令更好的解决方案。 Bill Wagner很好地描述了Effective C#中的[Conditional]属性的优点,第2版,第4项,p。 20.享受!