2013-02-27 3 views
5

J'ai un script nant qui, dans l'une de ses cibles, utilise les balises msbuild pour créer une solution Visual Studio 2010.Comment spécifier la version MSBuild dans un script nant?

Le problème est-il échoue quand il frappe ce point, l'erreur est:

Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, inclusive. 

Failed to start MSBuild. 

External Program Failed: C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe (return code was 1) 

L'erreur est logique, si elle est d'appeler la version .NET 2.0 de MSBuild il ne compilera pas la solution VS2010. Cependant, je n'arrive pas à comprendre comment l'appeler la bonne version de MSBuild.

Si je lance 'où MSBuild' (de la même commande VS2010 Demander que le script de compilation a échoué dans), je reçois:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe 

Si je lance 'msbuild/version' (encore une fois, même fenêtre) Je reçois:

Microsoft (R) Build Engine version 4.0.30319.17929 
[Microsoft .NET Framework, version 4.0.30319.18034] 
Copyright (C) Microsoft Corporation. All rights reserved. 

4.0.30319.17929 

Donc tout semble devoir utiliser la version 4.0, mais ce n'est pas le cas. Une idée de ce que donne? Je sais que j'ai déjà abordé cette question, mais je ne me souviens plus de ce que c'était pour me sauver la vie.

Répondre

4

J'apprécie les réponses, et je sais que skolima de travailleraient, la solution a fini par être aussi simple que l'ajout de ce tag:

<property name="nant.settings.currentframework" value="net-3.5"/> 

Merci encore.

0

je répondu à une question similaire: <msbuild> task or msbuild.exe with NAnt? un certain temps

Essentiellement, si vous définissez une propriété qui pointe vers l'exécutable MSBuild, vous pouvez éviter le (long terme) problème lorsque vous mettez à niveau vers une version plus récente de .NET que ce que NAnt soutient hors de la boîte.

Questions connexes