2015-05-01 8 views
6

Esecuzione di un agente accumulo TeamCity per eseguire NUnit test su Ubuntu 14.04 LTC con l'ultima build di mono appare avere alcuni problemi di dipendenza che non posso risolvere per me. ho seguito la seguente installazione passiTeamCity NUnitLauncher in esecuzione su Linux (mono) dà "Corlib non in sincronia con questo runtime" Errore

Quando il TC Costruire Agent si avvia la fase di NUnit, non riesce semplicemente, e guardando i log mostra esegue

/usr/bin/mono-sgen /home/ubuntu/buildAgent/plugins/dotnetPlugin/bin/JetBrains.BuildServer.NUnitLauncher.exe 

che restituisce prontamente con

Corlib not in sync with this runtime: expected corlib version 117, found 111. 
Loaded from: /usr/lib/mono/4.0/mscorlib.dll 
Download a newer corlib or a newer runtime at http://www.mono-project.com/download. 

C'è qualche modo per farlo funzionare? Ho provato a rimuovere tutti i pezzi e re-installare di nuovo e persino a installare una versione precedente di mono build, ma senza alcun risultato.

collegamento

Il TC sembra funzionare e posso invocare e chiamare mono da sola e anche NUnit-console tuttavia questa build .exe fornita da TC sembra essere essere perplesso come linux non esperto manualmente.

Si prega di salvarmi dalla dipendenza inferno !!

Edit: Ho finito solo risolvere il mio problema con l'installazione di nunit-console e attivando la funzione di elaborazione di compilazione dei rapporti XML piuttosto che giocare con i file corelib e rompere qualcos'altro.

risposta

0

Ecco come ho lavorato intorno ad esso: (si noti la mia mono è in/opt/mono)

$ cd /opt/mono/lib/mono 
$ sudo mv 4.0 __4.0 
$ sudo ln -s 4.5 4.0 

cioè sbarazzarsi della cartella 4.0 e crea un symlink il 4.5 per essere 4,0

Questo è qualcosa di un hack, ma mi ha messo su e funzionante fino a quando una correzione corretta superfici!

Steve

+0

Grazie per il suggerimento ma che si è appena concluso con un altro errore! Ho finito per ricorrere al passaggio di comando 'nunit-console' insieme all'abilitazione della funzione di creazione dell'elaborazione di report XML. Sebbene i test non ritorni sul server, fa il lavoro per ora. – Rob

0

Ho avuto questo problema sul mio Raspberry Pi dopo la compilazione 4.0.2 ma stava caricando da /4.5/

Questo mi ha fatto andare:

sudo mv /usr/lib/mono/4.5/mscorlib.dll /usr/lib/mono/4.5/_old_mscorlib.dll 
sudo cp /opt/mono-4.0.2/lib/mono/4.5/mscorlib.dll /usr/lib/mono/4.5 
2

sostituendo la versione mscorlib chiede solo guai, ad esempio TypeLoadException e gli amici sono in attesa dietro l'angolo per prenderti.

Quello che ho fatto è stato sostituire il passo di costruzione di Teamcity con un'invocazione manuale di TC NunitLauncher, ma forzandolo a utilizzare Mono 4.5:

mono --runtime=4.5 /Applications/buildAgent/plugins/dotnetPlugin/bin/JetBrains.BuildServer.NUnitLauncher.exe v4.0 MSIL NUnit-2.6.3 $(find **/bin/Release/*Tests.dll | paste -sd ";" -) 

L'invocazione utilizza alcune shell inganno per trovare tutte le assemblee che mi interessano utilizzando un jolly, ma a parte che dovrebbe essere semplice da capire.

Sarebbe bello se Mono correggesse il loro runtime 4.0 rotto. Qualcuno l'ha già segnalato su https://bugzilla.xamarin.com/?

3

Questo è un bug Mono, vedere https://bugzilla.xamarin.com/show_bug.cgi?id=34675.

Il problema è che Mono si è trasferito a fornire gli assembly 4.0, incluso mscorlib.dll, solo sotto forma di assiemi di riferimento. Contengono solo metadati e sono destinati al compilatore. Normalmente le applicazioni usano solo la versione più recente automaticamente.

Il codice del caricatore in Mono tuttavia non è stato aggiornato per associare una versione runtime esplicita di v4.0.20506 o v4.0.30128 che TeamCity utilizza nei propri file .exe.config alla versione più recente. Il runtime tenta invece di caricare mscorlib.dll dalla directory 4.0 e si blocca in quanto la versione è troppo vecchia (è dal momento in cui sono stati generati gli assembly di riferimento).

Per risolvere il problema, è possibile modificare <build agent installdir>/plugins/dotnetPlugin/bin/JetBrains.BuildServer.NUnitLauncher.exe.config (e altri file exe.config) e rimuovere le seguenti righe:

<supportedRuntime version="v4.0.20506"/> 
<supportedRuntime version="v4.0.30128"/> 

Questo potrebbe smettere di funzionare una volta TeamCity decide di aggiornare il plugin però.

+0

Posso confermare che funziona. Non sono sicuro dello stato del bug Mono, non può accedervi (non autorizzato). Sembra che la correzione non sia attualmente nella versione mono stabile (a partire da ora). –

+0

Stato attuale: Ho corretto il bug sottostante con https://github.com/mono/mono/pull/2148, ma non lo farò nel prossimo Mono 4.2. Mi assicurerò che sia incluso nella prima versione del servizio. –

Problemi correlati