Es sieht so aus, als würde man in der Registrierung stöbern
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
kann sein, wonach Sie suchen; Starten Sie regedit.exe und schauen Sie.
Abfrage über Kommandozeile (per Nikolay Botev )
reg.exe query "HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0" /v MSBuildToolsPath
Abfrage über PowerShell (per MovGP0 )
dir HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\
Sie können auch den Pfad von MSBuild.exe zur Befehlszeile drucken:
quelle
/reg:32
oder/reg:64
bei beiden Bitnessess voncmd
(oder einem beliebigen Prozess, den Sie ausführen ) diesen Pfad explizit abrufen .Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\4.0\MSBuildToolsPath
Wenn Sie MSBuild für .Net 4 verwenden möchten, können Sie den folgenden PowerShell-Befehl verwenden, um den Pfad der ausführbaren Datei abzurufen. Wenn Sie Version 2.0 oder 3.5 möchten, ändern Sie einfach die Variable $ dotNetVersion.
Um die ausführbare Datei auszuführen, müssen Sie der Variablen $ msbuild & voranstellen. Dadurch wird die Variable ausgeführt.
quelle
$dotNetVersion
12.0 (vs 2013) und 14.0 (vs 2015) (falls natürlich installiert)HKLM:\software\Microsoft\MSBuild\ToolsVersions
Schlüssel hinzufügt . Stattdessen müssen Sie das VS2017-Installationsverzeichnis von abrufenHKLM:\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7\15.0
und dann anhängenMSBuild\15.0\Bin\MSBuild.exe
, um den MSBuild EXE-Speicherort abzurufen .Für Cmd-Shell-Skripte in Windows 7 verwende ich das folgende Fragment in meiner Batch-Datei, um MSBuild.exe in .NET Framework Version 4 zu finden. Ich gehe davon aus, dass Version 4 vorhanden ist, aber nicht von der Unterversion. Dies ist kein allgemeiner Zweck, aber für schnelle Skripte kann es hilfreich sein:
Für meine Zwecke beende ich die Batch-Datei mit einem Fehler, wenn dies nicht funktioniert hat:
quelle
set bb.build.msbuild.exe=
? Ist es erforderlich oder nur ein Artefakt Ihres Setups?Sie können diesen sehr bewährten PowerShell-Befehl verwenden, um das zu erhalten
MSBuildToolsPath
aus der Registrierung abzurufen.PowerShell (aus der Registrierung)
Ausgabe
oder aus dem Dateisystem
PowerShell (aus dem Dateisystem)
Ausgabe
quelle
Anweisungen zum Auffinden von MSBuild :
&"${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -products * -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -products * -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
Anweisungen zum Auffinden von VSTest :
&"${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -products * -requires Microsoft.VisualStudio.PackageGroup.TestTools.Core -find Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -products * -requires Microsoft.VisualStudio.PackageGroup.TestTools.Core -find Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
(Beachten Sie, dass die obigen Anweisungen geringfügig von den offiziellen Anweisungen von Microsoft abweichen. Insbesondere habe ich das
-prerelease
Flag eingefügt, damit Preview- und RC-Installationen abgerufen werden können, und das-products *
, um Visual Studio Build Tools-Installationen zu erkennen.)Es hat nur über zwei Jahre gedauert, aber schließlich hat Microsoft 2019 zugehört und uns eine Möglichkeit gegeben, diese wichtigen ausführbaren Dateien zu finden ! Wenn Sie Visual Studio 2017 und / oder 2019 installiert haben, kann das
vswhere
Dienstprogramm nach dem Speicherort von MSBuild et al. Abgefragt werden. Davswhere
sich immer bei%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
befindet, ist kein Bootstrapping und keine Pfad-Hardcodierung mehr erforderlich.Die Magie ist der
-find
Parameter, der in Version 2.6.2 hinzugefügt wurde . Sie können die installierte Version ermittelnvswhere
, indem Sie sie ausführen oder ihre Dateieigenschaften überprüfen. Wenn Sie eine ältere Version haben, können Sie einfach die neueste herunterladen und die vorhandene überschreiben%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
.vswhere.exe
ist eine eigenständige ausführbare Datei, sodass Sie sie von jedem Ort herunterladen und ausführen können, an dem Sie über eine Internetverbindung verfügen. Das bedeutet, dass Ihre Build-Skripte überprüfen können, ob die Umgebung, in der sie ausgeführt werden, korrekt eingerichtet ist, um nur eine Option zu nennen.quelle
msbuild
in der Befehlszeile (insbesondere in der Visual Studio-Befehlszeile, wenn Sie diese verwenden) eingeben, diese verwendet wird. Gehen Sie folgendermaßen vor, um zu sehen, was verwendet wird, wenn Siemsbuild
in die Befehlszeile eingebenwhere msbuild
. Wenn dies nicht dasselbe ist, wie VSWHERE sagt, dass es das Neueste und Beste ist, müssen Sie entweder einen vollständigen Pfad zu demmsbuild.exe
zu verwendenden Pfad erstellen oder Ihre PATH-Variablen entsprechend anpassen.@AllenSanborn hat eine großartige Powershell-Version, aber einige Leute müssen nur Batch-Skripte für Builds verwenden.
Dies ist eine angewandte Version dessen, was @ bono8106 beantwortet hat.
msbuildpath.bat
build.bat
Für Visual Studio 2017 / MSBuild 15 hat Aziz Atif (der Typ, der Elmah geschrieben hat ) ein Batch-Skript geschrieben
https://github.com/linqpadless/LinqPadless/blob/master/build.cmd
quelle
Dies funktioniert für Visual Studio 2015 und 2017:
quelle
vswhere -products *
die Angaben in github.com/Microsoft/vswhere/wiki/Find-MSBuild .Die Registrierungsspeicherorte
Geben Sie den Speicherort für die ausführbare Datei an.
Wenn Sie jedoch den Speicherort für die Aufgabenerweiterungen benötigen, ist dieser aktiviert
quelle
Am einfachsten ist es, PowerShell zu öffnen und einzutreten
quelle
Ein Einzeiler basierend auf der Antwort von @ dh_cgn :
(Resolve-Path ([io.path]::combine(${env:ProgramFiles(x86)}, 'Microsoft Visual Studio', '*', '*', 'MSBuild', '*' , 'bin' , 'msbuild.exe'))).Path
Es wählt alle vorhandenen Pfade aus.
C:\Program Files (x86)\Microsoft Visual Studio\*\*\MSBuild\*\bin\msbuild.exe
.Die Wildcard-Sterne sind:
Beachten Sie, dass dieser Befehl den ersten Pfad auswählt, der dem nach Alphabet geordneten Ausdruck entspricht. Um es einzugrenzen, ersetzen Sie einfach die Platzhalter durch bestimmte Elemente, z. das Jahr oder die Werkzeugversion.
quelle
Geben Sie unter Windows 2003 und höher diesen Befehl in cmd ein:
Wenn nichts angezeigt wird, bedeutet dies, dass .NET Framework nicht im Systempfad enthalten ist. Das MSBuild sollte sich zusammen mit .NET-Compilern (vbc.exe, csc.exe) im .NET-Installationsordner befinden.
quelle
Ab MSBuild 2017 (v15) wird MSBuild jetzt in einem Ordner unter jeder Version von Visual Studio installiert
Hier sind einige Beispiele, wo sich MSBuild.exe auf meinem Computer befindet:
quelle
So rufen Sie den Pfad von msbuild 15 (Visual Studio 2017) mit Batch aus der Registrierung ohne zusätzliche Tools ab:
Besser verfügbare Tools:
quelle
Sie würden nicht denken, dass es hier viel hinzuzufügen gibt, aber vielleicht ist es Zeit für eine einheitliche Vorgehensweise in allen Versionen. Ich habe den Registrierungsabfrage-Ansatz (VS2015 und niedriger ) mit der Verwendung von vswhere (VS2017 und höher) kombiniert, um Folgendes zu erreichen:
quelle
Es gibt viele richtige Antworten. Hier jedoch ein Einzeiler in PowerShell, mit dem ich den MSBuild-Pfad für die neueste Version ermittle :
quelle
-last 1
(anstatt-first 1
um die neueste Version zu erhalten) und verkette auch den Dateinamen (um den vollständigen Pfad und nicht nur den Ordner richtig zu erhalten).Diese Powershell-Methode ruft den Pfad zu msBuild aus mehreren Quellen ab. In der richtigen Reihenfolge versuchen:
Verwenden Sie zuerst vswhere (da Visual Studio aktuellere Versionen von msBuild zu haben scheint), z
Wenn nicht gefunden, versuchen Sie es mit der Registrierung (Framework-Version), z
Powershell-Code:
quelle
Für Visual Studio 2017, ohne die genaue Edition zu kennen, können Sie dies in einem Batch-Skript verwenden:
Mit dem Befehl findstr werden bestimmte ausführbare Dateien von msbuild ignoriert (in diesem Beispiel amd64).
quelle
Fügen Sie den vswhere-Zweig für https://github.com/linqpadless/LinqPadless/blob/master/build.cmd hinzu , funktioniert auf meinem Computer einwandfrei, und der vswhere-Zweig funktioniert auf dem Computer meines Partners. Möglicherweise sollte der vswhere-Zweig als erste Überprüfung vorwärts gehen.
quelle
Wenn Sie abenteuerlustig sind, können Sie den Quellcode und die neueste Version von MsBuild jetzt von GitHub unter https://github.com/Microsoft/msbuild/releases/ herunterladen.
quelle
Holen Sie sich die neueste Version von MsBuild. Bester Weg für alle Arten der msbuild-Installation für unterschiedliche Prozessorarchitekturen (Power Shell):
quelle
Wenn Sie ein Delphi-Projekt kompilieren möchten, lesen Sie "FEHLER MSB4040 Es gibt kein Ziel im Projekt", wenn Sie msbuild + Delphi2009 verwenden
Die richtige Antwort lautet: "Es gibt eine Batch-Datei namens rsvars.bat (suchen Sie im RAD Studio-Ordner danach). Rufen Sie diese auf, bevor Sie MSBuild aufrufen, und es werden die erforderlichen Umgebungsvariablen eingerichtet. Stellen Sie sicher, dass die Ordner in rsvars korrekt sind .bat, wenn sich der Compiler an einem anderen als dem Standardspeicherort befindet. "
Dieser Bat aktualisiert nicht nur die Umgebungsvariable PATH in den richtigen .NET-Ordner mit der richtigen MSBuild.exe-Version, sondern registriert auch andere erforderliche Variablen.
quelle