Quand je tape ...
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, sauf que lorsque je l'exécute sur un Visual Studio 2010 .sln
fichier, 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 la version de MSBuild qui est appelée n'est pas capable de comprendre mon fichier de solution.
J'ai pensé que je vérifierais mon chemin et verrais d'où MSBuild est récupéré. Cependant, il semble qu'aucune partie de mon chemin ne pointe vers un emplacement où se trouve MSBuild.
Comment la ligne de commande trouve-t-elle la copie de MSBuild qu'elle utilise et comment puis-je modifier cette version afin que la dernière version soit utilisée?
Il doit être quelque part dans l'environnement PATH. Utilisez "où msbuild" pour déterminer d'où il charge msbuild.
Utilisez le raccourci de Visual Studio Command Prompt (2010) pour initialiser le chemin d'accès et d'autres variables d'environnement pour VS 2010 et MSBuild 4.0.
J'ai trouvé cette question car ma variable PATH
ne contenait pas de référence à MSBuild.exe
. Au cas où quelqu'un d'autre rencontrerait ce problème, ma résolution consistait à enregistrer explicitement 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
Changez vos variables d'environnement .
Recherchez/définissez votre variable MSBuild chemin sur C:\Windows\Microsoft.NET\Framework\v4.0.30319
Manifestement, le chemin ci-dessus dépendra de votre emplacement d'installation, mais il sera proche sinon exact.
Pour construire un projet C # 6, 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 des lignes avec plus de numéros de version (12.0 et 4.0 par exemple) si vous souhaitez prendre en charge une gamme de versions.