NAnt genera errori su Windows Server 2008 dopo l'installazione di SDK ASP.NET 2.0

StackOverflow https://stackoverflow.com/questions/635224

  •  10-07-2019
  •  | 
  •  

Domanda

Sto usando TeamCity per gestire uno dei miei progetti, tuttavia non sembra funzionare bene con Nant su Windows Server 2008. Cosa posso fare per risolvere questo problema?

PRIMA di installare l'SDK Framework ASP.NET 2.0:

[10:21:07]: BUILD FAILED
[10:21:07]: Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.
[10:21:07]:     Property evaluation failed.
[10:21:07]: Expression: ${path::combine(sdkInstallRoot, 'bin')}
[10:21:07]:                             ^^^^^^^^^^^^^^
[10:21:07]:         Property 'sdkInstallRoot' has not been set.

DOPO:

[11:48:16]: Target framework: Microsoft .NET Framework 2.0
[11:48:16]: Target(s) specified: test 
[11:48:16]:  [property] Target framework changed to "Microsoft .NET Framework 3.5".
[11:48:16]: BUILD FAILED
[11:48:16]: INTERNAL ERROR
[11:48:16]: System.NullReferenceException: Object reference not set to an instance of an object.
[11:48:16]:    at NAnt.Core.FrameworkInfo.get_Version()
[11:48:16]:    at NAnt.Core.Project.UpdateTargetFrameworkProperties()
[11:48:16]:    at NAnt.Core.Tasks.PropertyTask.ExecuteTask()
[11:48:16]:    at NAnt.Core.Task.Execute()
[11:48:16]:    at NAnt.Core.Project.InitializeProjectDocument(XmlDocument doc)
[11:48:16]:    at NAnt.Core.Project.Execute()
[11:48:16]:    at NAnt.Core.Project.Run()
[11:48:16]: Please send bug report to nant-developers@lists.sourceforge.net.
[11:48:16]: Total time: 0.1 seconds.
[11:48:16]: Process exited with code 1
[11:48:16]: Build finished
È stato utile?

Soluzione

Un paio di cose che possono causare questo.

  1. Non hai installato l'SDK completo .Net 2.0.
  2. Manca alcune chiavi di registro. Se guardi nel registro di dire un computer Windows XP / Vista e cerchi sdkInstallRoot, probabilmente lo troverai. Quindi basta replicare il codice sul tuo server.

Tuttavia per verificare di avere installato .net framework sdks @ almeno vai nella cartella C: \ windows \ Microsoft.net e vai alla versione che ti serve e cerca all'interno per provare a trovare il csc.exe o programmi vbc.exe. Se non riesci a trovarli, non hai SDK installato ma molto probabilmente il runtime è installato.

Prova e vedi se questo aiuta.

Altri suggerimenti

  1. Richiede la voce .net 3.5 nella " frameworks " sezione.

  2. Assicura che Sdkinstallroot della versione 3.5 nella sezione sia il seguente, che è la causa principale di questo problema -
    <readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />

Spero che questo aiuti!

Quando ho usato Nant con un server a 64 bit di Windows Server 2003 ho dovuto scaricare una build notturna poiché Nant 0.86 beta 1 ha problemi a 64 bit. L'ho fatto funzionare ma non sono sicuro che funzionerà con Windows Server 2008. Nant è in beta da sempre. Se sei bloccato su Nant, prova una build notturna se non ti consiglio MSBuild per macchine .Net 2+ e 64 bit.

Per maggiori informazioni consulta questo articolo MsBuild vs . Nant

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