2017-04-07 6 views
0

Ich mache eine Build-Datei in Powershell. Diese Build-Datei muss auf die Visual Studio 2017-Version von MSBuild.exe verweisen. Leider hängt der Pfad zu dieser Datei von der Edition von Visual Studio ab, die Sie installiert haben.Finden Sie eine Datei effizient, von der ich den Unterpfad kenne, aber nicht den Stammordner

Zum Beispiel:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Pro\MSBuild\15.0\Bin 

Natürlich kann ich

$partial = ${env:ProgramFiles(x86)} + '\Microsoft Visual Studio\2017\' 
Get-ChildItem -Path $partial -Filter 'MsBuild.exe' -Recurse 

verwenden Aber es gibt viele andere Dateien und Ordner unter C:\Program Files (x86)\Microsoft Visual Studio\2017\.

Leider etwas wie das funktioniert nicht:

Get-ChildItem -Path $partial -Filter '\MSBuild\15.0\Bin\MsBuild.exe' -Recurse 

Gibt es eine Möglichkeit, ich Powershell einen besseren Hinweis geben kann, wo für MSBuild.exe aussehen?

+0

würde ich vorschlagen, dass vielleicht könnten Sie einmal suchen und dann irgendwo die Antwort zwischenspeichern. –

+1

Vielleicht ein Registrierungsschlüssel mit dem installierten Pfad? –

+0

Um Marks Kommentar zu erweitern, enthält der [Deinstallationsschlüssel] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa372105 (v = vs.85) .aspx) wahrscheinlich diese Informationen. Seien Sie vorsichtig bei 32/64 Bitness, da die Werte auch in 'WOW6432Node' existieren. – BenH

Antwort

1

Get-childitem Unterstützung Wildcards. Da sich nur ein bestimmter Teil der Zeichenfolge ändert (pro/community), können Sie diesen durch einen Platzhalter ersetzen.

C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin 

In der Tat können Sie einfach Get-Element den vollständigen Wildcard-Pfad verwenden.

Get-Item "C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin\MSBuild.exe" 

Dadurch werden alle übereinstimmenden Dateien zurückgegeben und vorausgesetzt, dass jeder Benutzer nur eine installierte Version von Visual Studio installiert hat, erhalten Sie eine Datei.

+0

Danke, ich hatte keine Ahnung. Das ist genau die Lösung, die ich mir erhofft habe. –

0

versuchen so etwas, und fügen Sie in dem für wählen Sie Ihre Version von msbuild

Resolve-Path HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\* | 
Get-ItemProperty | select MSBuildToolsPath 
+0

Das sah vielversprechend aus, aber es scheint, dass MSBuild 15 nicht unter diesem Registrierungsschlüssel registriert ist. –

Verwandte Themen