【问题标题】:What is the best way to set up a project/solution for both Windows 8 Metro & Windows Phone?为 Windows 8 Metro 和 Windows Phone 设置项目/解决方案的最佳方式是什么?
【发布时间】:2012-06-13 01:20:58
【问题描述】:

似乎有相当多的内容可用于将 Windows Phone 应用程序移植到 Metro,但如果您是从头开始并且想要构建一个在这两个平台上运行的应用程序呢?

据我了解,Windows Phone dev 在 Win7 上使用 VS2010,但 Metro dev 在 Win8 上需要 VS2012 RC。有没有办法同时处理两者? Windows Phone SDK 在 Windows 8 上的 VS2012 上运行正常吗?

是否可以在一个解决方案中同时拥有两个应用程序的项目(以及共享代码的单独项目 - 在可移植类库中?)?

【问题讨论】:

    标签: visual-studio windows-8 windows-runtime microsoft-metro windows-phone


    【解决方案1】:

    我自己没有这样做的环境,所以这充其量只是基于互联网研究的部分答案,加上我自己的一些可能相关的经验。

    根据this and other sources,VS2012 RC 不能与当前的 Windows Phone SDK 一起使用,这仍然需要 VS2010。例外情况是(正如您提到的)Portable Class Libraries,它似乎确实能够创建与 Windows Phone 7+ 兼容的库。但是,要在实际的 WP7 应用程序中使用这些,您需要在 VS2010 中的正确 WP 项目中引用它们。因此,如果 PCL 不足以满足您的需求,并且您想要具有共享代码的实际目标特定项目,那么单独使用 VS2012 将不是一个选择。

    但是,这个故事还有一些内容可能会引起您的兴趣,并且可能会对您有所帮助。

    首先是VS2012添加solution and project backward compatibility。 VS 解决方案可以包含项目,即使它们不能被您使用的 VS 版本加载,这意味着您可以构建一个同时包含 VS2012 Metro 项目和 VS2010 WP7 项目的解决方案。无论哪种情况,项目都将无法加载(我假设),具体取决于您使用的工具版本。

    这可能仍然有价值的原因是,您还可以创建共享代码的项目,以便将相同的代码库编译为通常不兼容的项目类型,即使它们不是可移植类库。

    它的工作方式是,您可以独立于任何项目或使用某种给定类型的项目作为基线创建代码文件,然后将代码文件链接到其他项目和 .在这种情况下,您可能需要一个 VS2010 WPF 或 Silverlight 5 项目,因为这两个版本都可以打开这些项目。然后,在这个项目旁边创建你的 Metro 和 WP7 项目(一开始没有代码)。接下来,您使用解决方案资源管理器的“添加现有项目”对话框从基线项目中选择文件(但不要单击“添加”)。单击“添加”按钮旁边的向下箭头,您将可以选择“添加为链接”,这正是您想要的。

    在两个项目中重复此过程将允许您在一个版本中开发的任何代码或资产流向另一个版本。此外,如果您需要修改或调试基线文件,您可以在任一版本的 VS 中进行,因为基线项目在任一版本中的工作方式相同。

    这个故事的最后一部分是,您可以使用条件编译符号和#if 预处理器指令来进一步调整任何必须根据目标发散的共享代码。但是,为了每个人的理智,应该谨慎使用它。

    我实际上已经在 VS2010 中以这种方式在 WP7、Silverlight 和其他项目之间共享代码,并且在需要的地方运行良好。

    因此,您仍然需要切换 IDE 来编译和部署 Metro 应用程序和 WP 应用程序,但从理论上讲,我认为即使在当前形式下,您实际上也可以从 VS 中挤出很多协同作用。

    今天的新信息

    今天在旧金山举行的 Windows Phone 峰会上,微软宣布 Visual Studio 2012 将能够编写面向 Windows 8 和 Windows Phone 7.5/8 的应用程序。这似乎改变了上面给出的信息并提供了一个明显而简单的解决方案。所以你还没有这个,但以后要注意它。

    【讨论】:

      【解决方案2】:

      一种方法,例如at least one open source project 使用的方法是使用链接源文件,共享可以共享的内容,并分支需要更改的内容。这似乎是一种简单的方法,并且可以跨所有平台进行维护。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多