Domanda

Non ho impostato nant per compilare il mio progetto ASP.NET MVC e funziona bene localmente. Aggiungo nant a una cartella di strumenti e la aggiungo al controllo versione. TeamCity raccoglie le mie modifiche e avvia la compilazione ma non riesce.

Credo che sto usando l'ultima versione di Nant e ho aggiunto il framework .net 3.5 a nant.exe.config. Cosa mi manca sul server e sì, il framework .net è installato sul server in quanto l'app asp.net mvc funziona se compilo e distribuisco manualmente lì?

Il file di build è il seguente:          

<target name="compile" description="Compiles using the AutomatedDebug Configuration">
    <msbuild project="Tolt.Sims.sln" />
</target>

Ecco l'errore:

BUILD FAILED Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.
Property evaluation failed. Expression: ${path::combine(sdkInstallRoot, 'bin')} ^^^^^^^^^^^^^^ Property 'sdkInstallRoot' has not been set.
For more information regarding the cause of the build failure, run the build again in debug mode. Try 'nant -help' for more information
È stato utile?

Soluzione

Se stai usando la versione beta di NAnt (che attualmente è l'unico modo per ottenere supporto per il targeting di qualcosa di più grande del framework 2.0), potresti avere un problema con il registro. Un problema simile è stato segnalato da Tim Barcz .

Le cose sono praticamente ridotte a NAntContrib (provider del task msbuild) che punta alla versione 2.0 di msbuild. Controlla la sua soluzione per vedere se si applica al tuo scenario.

Altri suggerimenti

Potenzialmente, non hai installato .NET Framework 2.0 SDK.

Puoi installarlo da http: // www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displaylang=en

Ho risolto questo problema aggiungendo quanto segue nel registro:

Nuovo valore stringa in: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework

Nominato: sdkInstallRootv2.0

Con il valore: C: \ Programmi \ Microsoft Visual Studio 8 \ SDK \ v2.0 \

Sembrava nascere nella vita ...

w: //

Questo problema è stato risolto dopo la versione 0.86 beta1. Il 1 ° aprile 2010, 0.90 è stato rilasciato con la correzione nel caso in cui l'aggiornamento di nant sia un'opzione per te. Per fornire ulteriori dettagli, la versione della correzione in 0.90 sembra essere stata una semplice modifica al file nant.exe.config. Il testo in grassetto di seguito è stato aggiunto e probabilmente risolverà il problema senza dover installare l'SDK 2.0.

  

<directory name="${path::combine(sdkInstallRoot, 'bin')}" if = " $ {proprietà :: esiste ('sdkInstallRoot')} " / >

Aggiorna la sezione net-2.0 per ripararla.

Ho riscontrato problemi simili con NAnt. So che questa non è la soluzione migliore , ma è una soluzione che funziona se devi far muovere il tuo progetto.

Ho scoperto che l'installazione di un ambiente di sviluppo (C # Express non ha funzionato per me, ma VS 2008 ha funzionato) sul server risolve questo problema. (Sì, mi rendo conto che ciò va contro le normali migliori pratiche, ma funziona e consente l'esecuzione dei miei script in modo da poter tornare alla codifica.)

Ho solo pensato di condividere in caso qualcuno si trovasse in una situazione simile .. (questo ha funzionato per me sia con CruiseControl.Net che con Hudson).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top