Domanda

Ho una soluzione complessa (sviluppata sotto Windows, distribuita in GNU Linux) con una serie di progetti di test unitari, utilizzando NUNIT 2.9.3.

Ecco un riferimento dal progetto:

<Reference Include="nunit.framework, Version=2.9.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\Program Files\NUnit 2.9.3\bin\net-4.0\nunit.framework.dll</HintPath>
</Reference>

Ho scaricato e costruito NUNIT 2.9.3 da fonte:

$ xbuild solutions/MonoDevelop/NUnit.Framework.sln /p:Configuration=Release

e installato in GAC:

$ gacutil /i solutions/MonoDevelop/bin/Release/nunit.framework.dll

$ gacutil /l nunit.framework
The following assemblies are installed into the GAC:
nunit.framework, Version=2.9.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
Number of items = 1

e installazione mono nunit locale cancellata:

$ rm /usr/lib/mono/2.0/nunit*
$ rm /usr/lib/mono/4.0/nunit*

Ma quando provo a costruire la mia soluzione:

$ xbuild MySolution.sln | grep error

: error CS0006: Metadata file `/usr/lib/mono/2.0/nunit.framework.dll' could not be found

Cosa ho sbagliato?

È stato utile?

Soluzione

Gli strumenti di costruzione non risolvono normalmente gli assembly dal GAC (tranne forse come ultima risorsa). Su .net loro "cartelle di assemblaggio" sono state registrate nel registro. Su mono usano "pkgconfig". Potresti aver rimosso gli assiemi di nunit ma non hai rimosso o fissato il file PKGConfig ("PC") che indica a XBuild e MonoDevelopview dove trovare la DLL.

Questo tipo di cose è il motivo per cui è una cattiva idea alterare le cose installate dai pacchetti. Dovresti disinstallare correttamente il pacchetto o utilizzare le variabili di ambiente appropriate per sovrascrivere le cose confezionate.

In questo caso, ti suggerirei di creare un file PC per i tuoi nuovi assiemi di nunit e inserirlo nella directory/usr/locale/lib/pkgconfig (/usr/locale è il prefisso per l'installazione di cose che crei dalla fonte) o Mettilo da qualche altra parte e fallo da qualche altra parte inclusa nella variabile di ambiente PKG_CONFIG_PATH.

Guarda anche:

E per alcuni background generali sulla configurazione di ambienti mono, vedi:

Altri suggerimenti

Quello che proverò è copiare NUNIT 2.9.3 nella cartella del mio file di origine come (cartella della soluzione) lib. Quindi aggiungi questo riferimento localmente e assicurati che il tag corrisponda a questo percorso locale.

Quando è configurato, penso che XBuild dovrebbe usare direttamente questa copia locale invece di leggere GAC o altri percorsi preconfigurati. In caso contrario, segnalerò un bug alla squadra mono.

L'opzione /pkg del compilatore mono ha funzionato bene per me ...

dmcs test.cs /r:System.Configuration.dll /r:System.dll /pkg:nunit

FWIW, ho installato NUNIT usando il gestore pacchetti Apt-get (su Ubuntu) ...

sudo apt-get install nunit
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top