如何在同一个项目中定位WinPhone和WinRT?

时间:2013-02-04 01:19:23

标签: msbuild visual-studio-2012 windows-runtime windows-phone-8

我创建了一个针对WinPhone 8和WinRT的Visual Studio 2012 C ++ / CX项目。如果有人有兴趣,可以下载here (Hybrid.zip)解决方案。

不幸的是,它与解决方案平台无法正常工作。两个平台正常运行:

  • 如果我选择解决方案平台ARM,则会构建本机ARM WinPhone二进制文件。

  • 如果我选择解决方案平台x64,则会构建本机64位Windows二进制文件。

但是我遇到了Win32的问题。 Windows Phone SDK将Win32理解为“模拟器的WinPhone x86二进制文件”,而Windows SDK将Win32理解为“Windows x86本机二进制文件”。同一个项目平台用于两个非常不同的事情!

我尝试过创建解决方案平台WinPhoneEmu。但是,我不知道如何创建一个项目平台,让我有两个不同的平台配置选择Win32WinPhoneEmu,其行为与我期望的一样。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我很确定这明确不支持。主要原因是WinRT和Phone之间的XAML语法相似,但不完全兼容(手机是Silverlight-ish,WinRT是一些奇怪的新东西)。

两者兼顾的最佳方法是共有3个项目:

  1. 一个针对Phone和WinRT的便携式类库,其中包含所有逻辑
  2. 链接到PCL的WinRT UI层
  3. 电话的UI图层,链接到PCL

答案 1 :(得分:0)

如果我理解正确,在这种情况下,您需要手动选择平台(x86,x64,ARM)和目标(设备,仿真器)。您可以通过在Visual Studio工具栏中添加平台选择器来轻松完成。工具 - >自定义 - >命令 - >工具栏 - >标准,然后添加'解决方案平台'命令。这是一个包含x86,x64,ARM,任何CPU等的组合框。然后你就可以选择x86 +仿真器WXGA用于WP8仿真器或x86 +设备对于W8设备:

See my screenshot

...在这之后它将如何在VS中看待:

enter image description here