2010-04-25 10 views
31

starten, wenn ich schreibe ...Wie richtige Version von Msbuild

Msbuild<Enter> 

... an der Eingabeaufforderung, bekomme ich ...

Microsoft (R) Build Engine Version 2.0.50727.4927 
[Microsoft .NET Framework, Version 2.0.50727.4927] 
Copyright (C) Microsoft Corporation 2005. All rights reserved. 

Das alles sehr gut und gut außer dass, wenn ich die Fehlermeldung anzeigt, führen diese gegen ein Visual Studio 2010 .sln Datei:

MyProject.sln(2): Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, inclusive. 
0 Warning(s) 
1 Error(s) 

Es scheint, dass die ver sion von MSBuild, das aufgerufen wird, ist nicht in der Lage, meine Lösungsdatei zu verstehen.

Ich dachte mir, ich würde meinen Weg überprüfen und sehen, wo MSBuild abgeholt wird. Es scheint jedoch, dass kein Teil meines Pfades auf einen Ort zeigt, an dem MSBuild zu finden ist.

Wie findet die Befehlszeile die Kopie von MSBuild, die es verwendet, und wie kann ich diese Version so ändern, dass die neueste Version verwendet wird?

Antwort

23

Es muss irgendwo in der PATH-Umgebung sein. Verwenden Sie 'wo msbuild', um festzustellen, woher es msbuild lädt.

Verwenden Sie die Visual Studio-Eingabeaufforderung (2010) Verknüpfung, um den Pfad und andere Umgebungsvariablen für VS 2010 und MSBuild 4.0 zu initialisieren.

+2

Wie vorhergesagt ... Ich hatte C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ in meinem Pfad, aber war im Wesentlichen blind dafür. Danke .. das Wo comand ist etwas, was ich noch nie zuvor gesehen habe ... toller Anruf –

+2

Vergessen Sie nicht, ältere MSBuild-Versionen werden auch aktualisiert, wenn neuere .NET-Frameworks installiert sind. Zum Beispiel aktualisiert .NET Framework 4.5.1 auch die MSBuild-Version von .NET Framework 4.0 auf 4.0.30319.18408. – Brain2000

2

Ändern Sie Ihre environment variables.

Suche/set Ihrer MSBuild Pfad Variable C:\Windows\Microsoft.NET\Framework\v4.0.30319

Obiviously der oben angegebene Pfad auf Ihrem Installationsort abhängig ist, aber es wird, wenn nicht genau nahe sein.

+0

Also meinen Sie hinzufügen 'C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319' zu der' PATH'-Variable des Systems? – Sebastian

37

Ich habe diese Frage gefunden, da meine PATH Variable keinen Verweis auf MSBuild.exe enthielt. Falls jemand anderes dieses Problem wird mit, war meine Auflösung der Umgebungsvariablen für Visual Studio-Tools an der Eingabeaufforderung zu explictly registrieren:

"%VS100COMNTOOLS%"\\vsvars32.bat // VS2010 environment variables 
"%VS110COMNTOOLS%"\\vsvars32.bat // VS2012 environment variables 
"%VS120COMNTOOLS%"\\vsvars32.bat // VS2013 environment variables 

MSBuild.exe jetzt in PATH

where msbuild 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe 
+2

Vielen Dank, diese Skripte sind großartig, um den korrekten Systempfad zu MSbuild zu setzen! Genau das, was ich gesucht habe. –

+0

Dies ist der einzige Weg, um es zum Laufen zu bringen. vcvarsall.Fledermaus fügt zuerst den alten Stoff dem PFAD hinzu. – kylewm

+0

Das funktioniert in meinem Fall nicht :-( – Sebastian

1

für den Bau eines registriert ist C# 6 Projekt arbeitete für mich in einer Batch-Datei

if exist "%ProgramFiles(x86)%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles(x86)%\MSBuild\14.0\bin  

if exist "%ProgramFiles%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles%\MSBuild\14.0\bin 

"%MSBUILDLOCATION%\msbuild.exe" "path\to\my\project.csproj" 

Sie können ganz einfach die Versionsnummer ändern (14.0) oder l hinzufügen inines mit mehr Versionsnummern (zB 12.0 und 4.0), wenn Sie eine Reihe von Versionen unterstützen wollten.

Verwandte Themen