从Visual Studio的构建后命令行运行Linux子系统

时间:2017-10-28 10:33:11

标签: visual-studio visual-studio-2015 windows-10 windows-subsystem-for-linux

我正在尝试从Visual Studio 2015的构建后命令行运行Windows 10 Linux子系统。也就是说,我有一个命令,其输出将通过管道传送到bash,例如xyz | bashbash应该依次启动Windows 10 Linux子系统并执行命令。

从常规CMD.exe命令行或.bat文件运行命令时,此方法非常有效。但是,从Visual Studio 2015 Post-,Pre-Build-或Pre-Link-Event命令行直接,通过call cmd /C 调用运行此操作时,或者外部.bat文件为代理,但失败并显示错误代码255并打印类似"命令' bash'没找到。"。当尝试使用bash.exe的完整路径时,这也失败了。

如何从Visual Studio的命令行运行bash

旁注:我试图在C / C ++项目上运行它。

1 个答案:

答案 0 :(得分:4)

在使用32位C ++应用程序中的bash时,我也遇到了这个问题。

问题是bash仅为64位 - 当您尝试在32位应用中使用它时,您对C:\Windows\System32\bash.exe的调用会被重定向到C:\Windows\SysWOW64\bash.exe存在。

要绕过重定向,您必须在从32位应用调用bash时使用C:\Windows\Sysnative\bash.exe。我实际上创建了一个批处理(.bat)代理,我将其添加到PATH以简化操作。

bash.bat:

@echo off

if exist "C:\Windows\Sysnative\bash.exe" (
  C:\Windows\Sysnative\bash.exe %*
) else (
  C:\Windows\System32\bash.exe %*
)