使用C++ 进行Windows通用应用平台开发

[原文发表地址] Universal Windows Platform Development with C++

[原文作者] Adam Welch (MSFT)

[原文发表时间] 2017/4/17

通用Windows平台(UWP) 应用程序利用一种新的Windows API和应用程序模型去创建一个单一的输出二进制文件,它可以在任何Windows 10设备上运行,范围从台式机到HoloLens。因为UWP应用程序可以在各种具有不同外形规格和输入方式的设备上运行。所以您希望将其定制到每个设备,并且能够解锁每个设备的独特功能 。除了有保证的核心API层之外,您还可以编写代码去访问特定于设备的APIs,以便您的应用程序可以实现特定于某种设备类型的功能,同时在其他设备上呈现不同的体验。自适应UI控件和新的布局面板可以帮助您定制各种设备屏幕分辨率和尺寸的UI。

在这篇博文中,我们将介绍如何创建一个C++ UWP应用程序的细节,以及Visual Studio如何使其成为一个很棒的体验:

  • 获取工具
  • 打开代码并且构建
  • 创建新项目
  • 编辑代码和导航
  • 调试和诊断
  • 测试
  • 与他人合作
  • Windows Store 包装

 

C++和通用Windows 平台

下面有几种方式去编写一个C++ UWP app:

  • C++/CX是Micorsoft对C++的语言扩展,它面向Windows 8 发布的Windows运行时,并随着Windows 10不断发展。
  • Windows 运行时库是一个模板库,它提供了一个低级别的方式来编写和使用Windows运行时组件。
  • C++/WinRT是最近实现的对于仅在头文件中实现的Windows运行时的标准C++语言的映射。它允许您使用任何符合标准的c++编译器来编写和使用Windows运行时API。C++/WinRT旨在为C++开发人员提供对现代Windows API的一流访问。最近的可以替代C++/WinRT的是CppWinRT。它是语言一致性封装的WinRT API,允许您使用现代的兼容的C++代码来进行Windows 10应用程序开发.

获取工具

VS为创建UWP应用程序提供了工具和进行C++ UWP开发所必须的一个可选安装组件,称为“C++通用Windows平台工具”。

打开代码并且构建

通用Windows平台应用程序使用Microsoft自己的构建系统,称为Msbuild,它使用与用于桌面开发的新项目模板相同的.vcxproj文件格式。

Msbuild是一个强大而全面的构建系统,可以在Visual Studio 中构建目标Windows的项目。构建基于Msbuild-的项目仅仅需要一个.vcxproj文件,并且可以在IDE中或者使用命令行来构建。

创建新项目

UWP开发工具提供了许多不同的模板供您选择,包括DirectX 11 和 Direct X12的模板。Windows运行时组件非常类似于库,但是仅仅使用可用于现代Windows 应用程序的WinRT APIs。这些组件可以在支持UWP开发的所有支持的Windows 运行时语言之间共享 ,包括C#,Visual Basic,JavaScript和C++。

为了在Win10上部署本地的UWP应用程序,你必须先启用“开发模式”,只可以在创建UWP项目之后完成。这将找到并安装用于Store应用程序部署的最新软件包,并且允许您部署在Visual Studio中开发的UWP应用程序。

在Windows 10中激活开发模式后,您现在就可以构建和部署通用Windows平台应用程序,如DirectX模板中提供的旋转立方体。

编辑代码和导航

VS提供了许多功能,可以帮助您正确,高效地编码。无论是通过智能感知提供强大的预测能力还是Navigate To中流畅的导航。让Visual Studio使用自动完成功能来为您工作,您只需要从成员列表中按Tab键来选择要添加的项目即可。

你还可以将鼠标悬停在任何变量,函数,或其他的代码符号上,并使用快速信息功能获取有关使该符号的信息。

还有许多强大的代码导航功能,可以使处理大型代码的工作更加高效,包括转到定义,转到行 /符号/成员/类型,查找所有引用,查看调用层次结构,对象浏览器等等。速览定义允许您查看定义所选变量的代码,甚至不用打开另一个最小化上下文切换的文件。

我们还支持一些更常见的代码重构技术,像重命名和提取函数,他们保可以让您的代码看起来美观和一致。

调试和诊断

VS最著名的就是调试应用程序。凭借世界一流的调试体验,为任何烈性的应用程序提供了大量的工具,没有任何工具更适合调试面向Windows桌面平台的应用程序。

强大的功能,如高级断点,自定义数据可视化和调试时间分析,使你能够完全控制应用程序的执行情况并精准定位到即使是最难发现的bug。使用调试器数据提示从代码查看数据值。记录内存快照并且对比他们,来发现潜在的内存泄漏,甚至可以从Visual Studio内部调用您应用程序中的PageHeap,以帮助解决臭名昭著的内存损坏难题。在应用程序运行时,实时监控性能,跟踪CPU和内存的使用情况。

测试代码

单元测试是一种非常流行的改进代码质量的方法,Visual Studio 中完全支持测试驱动开发。在Test Explorer中创建新的测试用例并且管理他们,可以便于管理和执行测试用例。编写单元测是很简单,可以帮助您更早的发现问题,而不是等到难以分离问题的时候。Visual Studio允许本机和托管的测试项目模板来测试本机代码,可以在Visual C++ > Test这一节点找到这样的新项目模板。

与他人合作

Visual studio除了使所有的开发人员的工作更加高效之外,协同合作也直接集成到IDE中。Visual Studio Team Service 具有一整套功能,可优化软件开发组织的团队合作过程。创建工作项目,跟踪进度,管理您的bug以及打开问题数据库,这些都可以从Visual Stuido内部进行。Git被完全支持,并且可以和Team Explorer无缝工作,允许您轻松的管理分支,提交和更新请求 (pull request).

为Windows Store打包您的应用程序

打包应用程序需要有几个步骤,以便您可以在Windows Store上分发它。首先,请确保您是已注册的Windows应用程序开发人员。一旦您注册并有兴趣发布已经测试和优化的应用程序,您可以在应用程序清单文件(package.appxmanifest)中选择您的打包选项。这个详细的封装指南将引导你完成所需的其余步骤,使您的应用程序准备好发布,并将其提交到Windows Store

尝试用Visual Studio 2017进行C++ UWP开发! 下载Visual Studio 2017,尝试它并分享您的反馈。对于问题,请通过VS标题栏右上角的“报告问题”选项让我们知道。请在开发者社区门户网站跟踪您的反馈。对于建议,请通过UserVoice让我们知道。