Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

安装Visual Studio 2019

在安装Visual Studio 2019时,需要勾选Linux开发环境选项,即勾选“使用C++的Linux开发”工具集,如下图所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

创建Linux类型项目

启动已经安装好的Visual Studio 2019,创建新项目选择,如下图所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

项目新建完成后,IDE已经自动帮我们编写完成一个HelloWorld的程序代码。因为程序需要在Linux上编译运行,所以我们必定需要在编译前指定编译部署目标,即确定目标Linux机器。Visual Studio编辑器是通过SSH的方式远程连接到目标Linux机器,把我们的项目和文件拷贝复制到目标机器,然后再进行编译运行,因此我们需要先指定SSH目标机器。

Linux连接管理配置

VS的Linux管理器可以帮助我们管理目标机器,菜单工具->选项->跨平台->连接管理器,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

本次练习使用的是Windows 10的WSL方式,因此需要先安装部署好我们的WSL,本次测试使用Ubuntu,因需要支持配置开发,所以安装完Ubuntu后,还需要安装开发环境及SSH支持。
第一次添加远程连接对象时,可在连接管理器菜单页店家添加,然后输入目标地址及账户即可,WSL的方式目标地址为localhost,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

输入好目标信息后,点击连接,如果信息及配置环境均正确,则会将远程机器的库及其他有用信息同步到本地,因为文件可能会比较多,这一步时间会比较久,同步的信息便代码编写时于IDE自动代码补全等,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

如果同步结果异常,则可以根据具体情况分析解决,也可以不予理会,因为本地Windows只是用于开发,实际代码编译还是在目标机器上,所以库文件不足关系也不大。实际上,我实测过程中就失败,到最后提示异常,但是并未发现有所影响。

编译链接

编译链接项目时,选择我们需要的目标机器,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

然后右键项目选择生成重新生成,如果顺利,则可以看到编译链接成功,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

默认情况下,此时我们登陆目标Linux机器,可以查看到我们的项目文件及编译结果,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

目标机器部署情况,我们可以通过项目属性查阅及配置,右键项目选择属性,如下图所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

此处可以查阅到项目目标机器,远程生成的根目录及其他属性,跟普通的Windows项目的属性有很多共性,还是比较容易学习的。

需要注意的是,测试过程中,远程生成根目录默认为~下的路径,但是有时发现并不会解析~为登录账户的用户目录,而是解析为登录账户用户目录下的一个~的目录,因此如果项目编译部署后没有在预期项目中找到对应的文件,则可查看文件是否在~目录下。简单的解决方法可直接将~替换为实际的远程用户目录。

调试运行

如果直接运行,则发现本地IDE不会像预期一样输出,而是马上执行完并退出,输出如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

从上述结果中发现,并未看到输出,类似于执行代码的调试信息。
实际上,未看到执行输出是因为程序执行太快,输出窗口一闪而逝,因此需要打断点调试(或sleep),在return语句处打断点,再次执行,则可以看程序执行输出,如下所示:

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

调试过程中可以发现,此时调试Linux程序与调试普通的Windows程序很相似了,可以根据需要添加变量监控,使熟悉windows开发人员快速转移到Linux编码开发。

项目地址

项目有Github地址

Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发

上一篇:Ubuntu 解压 RAR


下一篇:linux yum仓库配置