如何在 Windows 10 上创建特定设备系列的项目,类似于 W8.1/WP8.1?

3
我计划将我的WP8.1应用程序移植到Windows 10作为通用应用程序。我看到微软添加了创建单个通用项目的功能,并创建包含共享单个代码后台文件的XAML页面/控件的不同家族特定文件夹。但是,我对这种方法有一些不喜欢的地方:
• 我只能为不同设备拥有不同的XAML文件,但使用相同的.cs文件,因此不容易创建一些设备特定的UI逻辑,如动画等。
• 由于我将拥有一个单独的通用项目,所以必须在运行时检查我需要的API /类的可用性,而不能像编译时那样看到我是否可以使用它们,我认为这要好得多。
我看过Jerry Nixon和Andy Wigley的MVA视频,他们说经典的多头通用项目仍将受到Windows 10的支持,但我不知道如何设置它们,也找不到任何文档。
每个人都在谈论这个带有共享.cs文件的单个项目,但我真的更愿意使用多头项目:一个用于移动电话,一个用于桌面/平板电脑,可能还有一个共享项目或某种PCL来在两个项目之间共享类和其他东西(像W8.1/WP8.1一样的共享项目会很棒)。
有什么想法吗?

OT:不确定“family-specific”这个术语是否是最好的选择? - TaW
@TaW 是的,我不知道该怎么称呼它,因为微软总是在谈论“设备家族”。正如我所说的,我的意思是我想拥有一个桌面/平板电脑项目和另一个只针对移动电话的项目。 - Sergio0694
1个回答

1
技术上讲,Windows 8.1通用应用程序由三个项目构建而成。其中一个是为Windows 8.1设计的,一个是为手机设计的,另一个是共享CL。 虽然没有内置模板,但您可以通过手动操作或使用VS可扩展性工具创建自己的模板来实现相同的结果。 您只需要创建一个UAP解决方案,添加另一个UAP项目,根据需要命名,比如MyProjectName.Phone和一个名为MyProjectName.Shared的通用CL,在其他两个中引用共享项目,然后就可以开始了... 要针对特定的设备系列定位您的项目,您可以在Package.Appmanifest中指定该意图。
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />

听起来很合理,谢谢!有没有一种简单的方法为特定项目设置目标设备系列,以便它们将在各自的设备上运行? 另外,由于我最终会有两个独立的二进制文件,我该如何将它们提交到商店?我的意思是,我能否在商店中创建一个单一的应用程序,上传这两个二进制文件,并且商店会根据设备自动下载正确的二进制文件? - Sergio0694
我更新了我的回答。如果您指定设备系列,您的软件包将仅提供给该设备系列。 - Barptad
再次感谢您!您能否确认商店将接受单个通用应用程序的不同二进制文件,并且当设备尝试下载应用程序时,它将自动分发正确的二进制文件? - Sergio0694
根据我目前阅读的文档,我还没有机会通过自己的经验来确认这一点,但是是的,情况是如此。我认为体验将与Win 8.1包目前的体验相同,您只需上传多个包,商店将根据所请求的设备类型相应地提供它们。 - Barptad
好的!我只是想知道使用不同的二进制文件,某些功能将如何工作,例如,我猜手机上的连续性不会使用单独的项目进行支持,因为在手机上运行的二进制文件仅适用于该设备大小,并且无法在另一个设备上以窗口/全屏模式运行。 - Sergio0694
这就是为什么我不建议遵循这种做法。如果您担心在不同设备上无法使用某些功能,可以在调用它们之前检查这些API。文档非常详尽地介绍了自适应代码实践,我相信大多数问题都已得到解决。我自己一直在开发UAP项目,我必须说,与旧的通用应用程序相比,体验要好得多。这里是一个链接到msdn指南的链接:https://msdn.microsoft.com/library/windows/apps/xaml/mt244352.aspx。 - Barptad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接