Pregunta

Tengo una solución compleja (desarrollada en Windows, implementada en Gnu Linux) con una serie de proyectos de prueba de unidades, utilizando NUNIT 2.9.3.

Aquí hay una referencia del proyecto:

<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>

Descargué y construí Nunit 2.9.3 desde fuente:

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

e instalado en 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

y la instalación de mono mono local eliminada:

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

Pero cuando trato de construir mi solución:

$ xbuild MySolution.sln | grep error

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

¿Qué estoy mal?

¿Fue útil?

Solución

Las herramientas de compilación normalmente no resuelven ensamblajes del GAC (excepto posiblemente como último recurso). En .NET ellos "carpetas de ensamblaje" registradas en el registro. En mono usan "PKGConfig". Es posible que haya eliminado los conjuntos de NUNIT, pero no eliminó ni solucionó el archivo PKGConfig ("PC") que le dice a XBuild y MonodeVelop dónde encontrar el DLL.

Este tipo de cosas es la razón por la cual es una mala idea alterar las cosas instaladas por los paquetes. Debe desinstalar el paquete correctamente o usar las variables de entorno apropiadas para anular las cosas empaquetadas.

En este caso, le sugiero que cree un archivo de PC para sus nuevos conjuntos de nunit, y lo ponga en el directorio/usr/local/lib/pkgconfig (/usr/local es el prefijo para instalar cosas que construye desde la fuente), o Póngalo en otro lugar y tenga eso en otro lugar incluido en la variable de entorno PKG_CONFIG_PATH.

Ver también:

Y para obtener un fondo general sobre la configuración de entornos mono, consulte:

Otros consejos

Lo que intentaré es copiar la nunit 2.9.3 a mi carpeta de archivo fuente, como (carpeta de soluciones) lib. Luego agregue esta referencia localmente y asegúrese de que la etiqueta coincida con esta ruta local.

Cuando eso está configurado, creo que XBuild debería usar esta copia local directamente en lugar de leer GAC u otras rutas preconfiguradas. Si no, informaré un error al equipo mono.

La opción /pkg del compilador mono funcionó bien para mí ...

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

FWIW, instalé NUNIT usando el Administrador de paquetes APT-Get (en Ubuntu) ...

sudo apt-get install nunit
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top