Führen Sie die Visual Studio-Befehlszeilentools in Windows PowerShell aus

6699
Uwe Honekamp

In cmd.exe würde ich einfach laufen

%VS80COMNTOOLS%\vsvars32.bat 

Einrichten der Umgebung zum Ausführen der Visual Studio-Befehlszeilentools (z. B. cl, link, mt usw.). Ich frage mich, wie ich die Umgebung für die Ausführung dieser Tools in der Powershell einrichten kann. Sicher ist es möglich, Batch-Dateien mit auszuführen

start-process $env:vs80comntools\vsvars32.bat 

Aber dann wäre die Umgebung weg, wenn der Prozess beendet wird. Ich habe bereits einige Experimente mit System.Diagnostics.StartProcessInfo durchgeführt, dh

$proc = start-process $env:vs80comntools\vsvars32.bat -passthru $procInfo = proc.StartInfo 

und dann holt sich die Umgebung $procInfo.EnvironmentVariablesaber das funktioniert auch nicht.

Gibt es andere Möglichkeiten, die Umgebung in Powershell einzurichten?

10

2 Antworten auf die Frage

5
heavyd

Die PowerShell Community Extensions enthält ein Import-VisualStudioVarsCmdlet.

2
Jay Bazuzi

PSCX Import-VisualStudioVarsist ein umfangreiches Skript, das versucht zu duplizieren, was es vsvars32.battut. Das Problem dort ist, dass das Synchronisieren der Dateien Mühe erfordert und Fehler verursachen kann.

Ich ziehe es vor, auf vsvars32.bat zu setzen, um das zu tun, was es tut, und das env zu importieren. Vars. in PowerShell. Ich mache das mit Invoke-CmdScript.ps1 .

Danke für die Antwort. Ich habe bereits darüber nachgedacht, dass Import-VisualStudioVar die Ausführung von vsvars32.bat mehr oder weniger spottet, anstatt es tatsächlich auszuführen. Da vsvars32.bat jedoch für eine bestimmte Version von VS recht stabil ist, glaube ich nicht wirklich, dass es ein echtes Problem gibt, die Ergebnisse beider Optionen synchron zu halten. Trotzdem werde ich Ihren Vorschlag ausprobieren. Uwe Honekamp vor 14 Jahren 0