2013-02-27 24 views
5

Ho uno script nant che in uno dei suoi target utilizza i tag msbuild per creare una soluzione di Visual Studio 2010.Come specificare la versione di MSBuild nello script nant?

Il problema è che non riesce quando colpisce questo punto, l'errore è:

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'errore ha un senso, se si sta chiamando la versione di .NET 2.0 di MSBuild non si compila la soluzione VS2010. Tuttavia, non riesco a capire come ottenere per chiamare la versione giusta di MSBuild.

Se corro 'dove MSBuild' (dallo stesso Comando VS2010 Prompt che lo script di build non è riuscita a), ottengo:

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

Se corro 'msbuild/version' (di nuovo, stessa finestra) Ottengo:

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 

Quindi tutto sembra che dovrebbe usare la versione 4.0, ma non lo è. Qualche idea su cosa dia? So di aver già affrontato questo problema in precedenza, ma non riesco a ricordare cosa significasse salvarmi la vita.

risposta

4

Apprezzo le risposte, e so skolima di funzionerebbero, la soluzione ha finito per essere semplice come l'aggiunta di questo tag:

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

Grazie ancora.

0

ho risposto a una domanda simile: <msbuild> task or msbuild.exe with NAnt? un po 'indietro

In sostanza, se si imposta una proprietà che punta al file eseguibile MSBuild, è possibile scongiurare il (lungo termine) problema quando si esegue l'aggiornamento a una versione più recente di .NET di quello che NAnt supporta fuori dalla scatola.

Problemi correlati