我们引入了一种新功能,可以在中运行远程任务 Visual Studio 2017 15.5预览版2 . 此功能允许您在VisualStudio的连接管理器中定义的远程系统上运行任何命令。远程任务还提供将文件复制到远程系统的功能。此功能是在安装时添加的 用C++工作负载开发Linux . 如果您想了解有关打开文件夹功能的更多信息,请阅读 https://aka.ms/openfolder/cpp .
要开始此操作,请在PC上的文件夹中创建一个文件main.cpp,将下面的源代码添加到其中,然后在VS中打开该文件夹。
#include int main(){ std::cout << "Hello" << std::endl;}
要获取此文件的Linux IntelliSense,请转到菜单“项目”>“编辑设置”>“CppProperties.json”。修改文件,使其只包含一个如下所示的条目。
{ "configurations": [ { "inheritEnvironments": [ "linux_x64" ], "name": "Linux-x64", "includePath": [ "${env.INCLUDE}" ], "defines": [ ] } ]}
在“解决方案资源管理器”中右键单击main.cpp并选择“配置任务”。在打开的tasks.vs.json文件中,按如下所示修改任务。此任务将目录复制到指定的远程计算机,然后在指定的目录中运行“g++main.cpp”。
{ "version": "0.2.1", "tasks": [ { "taskName": "Build", "appliesTo": "main.cpp", "type": "remote", "contextType": "build", "command": "g++ main.cpp", "remoteMachineName": "ubuntu", "remoteCopyDirectory": "~/sample", "remoteCopyMethod": "sftp", "remoteWorkingDirectory": "~/sample/hello", "remoteCopySourcesOutputVerbosity": "Verbose" } ]}
在解决方案资源管理器中右键单击main.cpp并选择“生成”,可以运行此任务。输出窗口将显示文件复制结果。此编译命令没有输出,除非有错误。
字段类型是我们可以更改在远程机器上运行的类型的上下文的地方,命令是将在那里执行的内容。上下文类型build将此命令放置到任务应用到的文件的上下文菜单的该区域中。字段remoteMachineName需要与visualstudio连接管理器中定义的连接匹配。您可以在快速启动(Ctrl+Q)中键入connectionmanager,或在“工具”>“选项”>“跨平台”>“连接管理器”下找到它。请注意,您可以使用字段remoteCopyDirectoy和remoteWorkingDirectory为文件的复制位置和命令的运行位置指定不同的目录。复制文件时,这些文件将被复制到与您在Visual Studio中打开的文件夹同名的文件夹中的指定位置。默认情况下,命令在远程系统的主目录中执行。您还可以指定要用于复制的方法、sftp、rsync或none以禁用。对于大型项目,建议使用rsync方法。remoteCopySourcesOutputVerbosity选项不是必需的,但是如果您试图诊断问题,则了解该选项非常有用。
当然,你可以用远程任务做任何你喜欢的事情。要运行上面第一个命令的输出,请在上面的命令之后添加另一个任务。
{ "taskName": "Run", "appliesTo": "main.cpp", "type": "remote", "command": "./a.out", "remoteMachineName": "localhost", "remoteWorkingDirectory": "~/sample/hello", "remoteCopySourcesOutputVerbosity": "Verbose" }
当您在解决方案资源管理器中选择main.cpp时,此任务将在上下文菜单的底部显示为“运行”。当执行时,在编译之后,您应该在输出窗口中看到“Hello”。
下一步是什么
下载 Visual Studio 2017预览版 ,安装 Linux C++工作负载 ,并尝试一下您的项目。
这是这个新特性的一个非常简单的例子。我们期待着听到您如何在您的项目中使用它。
联系我们最好的方式是通过 我们的GitHub托管问题列表 ,直接邮寄至 vcpplinux-support@microsoft.com 或者在推特上找到我 @机器人爸爸 .