2010-04-25 5 views
31

Quand je tape ...Comment lancer la version correcte de msbuild

Msbuild<Enter> 

... à l'invite de commande, je reçois ...

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. 

Tout cela est très bien et bon sauf que quand je lance ce contre un Visual studio 2010 fichier .sln, le message d'erreur indique:

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) 

Il semblerait que le ver sion de MSBuild en cours d'appel n'est pas capable de comprendre mon fichier de solution. Je me suis dit que je vérifierais mon chemin et verrais d'où MSBuild est pris. Cependant, il semble qu'aucune partie de mon chemin ne pointe vers un emplacement où MSBuild doit être trouvé.

Comment la ligne de commande trouve-t-elle la copie de MSBuild utilisée et comment puis-je changer cette version pour que la dernière version soit utilisée?

Répondre

23

Il doit se situer quelque part dans l'environnement PATH. Utilisez 'where msbuild' pour déterminer où il est en train de charger msbuild.

Utilisez le raccourci Visual Studio Command Prompt (2010) pour initialiser le chemin d'accès et les autres variables d'environnement pour VS 2010 et MSBuild 4.0.

+2

Comme prévu ... J'avais C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ dans mon chemin, mais était essentiellement aveugle. Merci .. le comand Where est quelque chose que je n'avais jamais vu auparavant ... super appel –

+2

N'oubliez pas, les anciennes versions de MSBuild sont également mises à jour lorsque de nouveaux frameworks .NET sont installés. Par exemple, .NET Framework 4.5.1 met également à jour la version .NET Framework 4.0 MSBuild vers la version 4.0.30319.18408. – Brain2000

2

Modifier votre environment variables.

Recherche/ton chemin variable à C:\Windows\Microsoft.NET\Framework\v4.0.30319

MSBuild

Obiviously le chemin ci-dessus dépendra de l'emplacement d'installation, mais il sera proche sinon exacte.

+0

Vous voulez donc ajouter 'C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319' à la variable' PATH' du système? – Sebastian

37

J'ai trouvé cette question car ma variable PATH ne contenait pas de référence à MSBuild.exe. Dans le cas où quelqu'un d'autre est d'avoir cette question, ma résolution était d'enregistrer explictly les variables d'environnement pour les outils Visual Studio à partir de l'invite de commande:

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

MSBuild.exe est maintenant enregistré dans PATH

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

Merci beaucoup, ces scripts sont parfaits pour définir le chemin d'accès correct du système à MSbuild! Exactement ce que je cherchais. –

+0

C'est la seule façon de le faire fonctionner. vcvarsall.La chauve-souris ajoute d'abord le vieux truc au PATH. – kylewm

+0

Cela ne fonctionne pas dans mon cas :-( – Sebastian

1

Pour la construction d'une C# 6 projet, cela a fonctionné pour moi dans un fichier batch

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" 

Vous pouvez facilement changer le numéro de version (14.0) ou ajouter l ines avec plus de numéros de version (12.0 et 4.0 par exemple) si vous vouliez supporter une gamme de versions.

Questions connexes