2016-07-06 17 views
5

Ich habe vor kurzem mit dem Windows-Subsystem für Linux (WSL) zu sehen, ob mein Linux-Makefile-Mikrocontroller-Projekt "nativ" in Windows. Zu meiner Überraschung, die Werkzeugkette und Linux-basierte Entwicklungstools installiert und funktionierte perfekt auf Anhieb, ohne Änderungen am Makefile.Basieren einer WSL Bash-basierten Build von Visual Studio 2015

Das hat mich dazu gebracht zu versuchen, alle meine Code-Bearbeitung in Visual Studio mit den IDE-Funktionen zu tun, während das eigentliche Build in der Linux-Bash-Umgebung in WSL &.

Leider, wenn eine "Build Command Line" in den NMake Optionen für mein Visual Studio-Projekt angeben, in "C:\Windows\System32\bash.exe build.sh" setzen, weil nicht funktioniert:

'C:\Windows\System32\bash.exe' is not recognized as an internal or external command, operable program or batch file.

Das ist mir fremd, weil ich angegeben Der vollständige Pfad und es konnte nicht gefunden werden, die WSL bash ausführbare Datei, und auch versuchen, es als "External Tool" hinzufügen, scheint nicht zu funktionieren, weil die ausführbare Datei nicht im Auswahlfenster angezeigt wird, obwohl andere zu sehen ausführbare Dateien im selben Verzeichnis.

Einige off-topic Meinung: Wenn Microsoft Visual Studio und WSL nahtlos zusammenarbeiten kann, würde ich wahrscheinlich von meinem Ubuntu Virtual Machine Setup für eine WSL-basierte Entwicklungsumgebung wechseln.

+0

Mögliches Duplikat von [Windows-Bash und Visual Studio-Code: Wie ich bash als Lauf Aufgabe starten kann] (http://stackoverflow.com/questions/37248106/windows-bash- and-visual-studio-code-wie-kann-ich-launch-bash-as-a-run-task) – stijn

+1

Kein Duplikat - "Visual Studio Code" ist ein völlig anderes Programm als "Visual Studio". Die Antwort über die Verwendung von C: \ Windows \ sysnative \ bash.exe als Pfad ist interessant, funktioniert aber immer noch nicht für mich. – DouglasHeriot

+0

@Jon hast du jemals eine Lösung gefunden? – DouglasHeriot

Antwort

0

Hier ist, wie Sie es zu tun haben:

Nmake ist keine 64-Bit-Anwendung, so dass, wenn es versucht, Windows-Dienstprogramme zu verwenden und system32, es WoW64 Tricks in an einem anderen Ort suchen.

Die Art und Weise Sie starten müssen, um es von einem 32-Bit-Anwendung ist:

%windir%\sysnative\bash.exe

jedoch Ihr Befehl auch fehlerhaft ist. Sie müssen es so machen:

%windir%\sysnative\bash.exe -c "sh build.sh"

oder vielleicht

%windir%\sysnative\bash.exe -c "./build.sh"

wenn DriveFS Berechtigungen Ausführung ermöglichen.

Andernfalls wird versucht, build.sh als Befehl im $ PATH Ihres Linux-Benutzers auszuführen.

Quelle: https://github.com/Microsoft/BashOnWindows/issues/870