2010-09-20 11 views
6

Estoy usando una nUnit para, bueno, probar la unidad de un conjunto.nUnit: ignore la copia de GAC de una DLL

El ensamblaje está en mi dir de salida de proyecto (\ bin \ debug) y se carga en nUnit (Ensambles> Agregar ensamblaje) desde esta ubicación.

Sin embargo, una versión más antigua también está en el GAC y nUnit está escogiendo esta en su lugar.

Por supuesto, puedo eliminar la versión anterior y volver a instalarla en el GAC durante la compilación, pero esto lleva tiempo: cualquier forma de forzar a nUnit (o más probablemente al .NET framework) a recoger la versión del bin \ depurar dir?

EDITAR

El AssemblyVersion (y por lo tanto el nombre fuerte) de ambas versiones son fijos - su sólo la versión de archivo que cambia según KB 556041 - How to use Assembly Version and Assembly File Version

+0

Esto solo debería ocurrir si bin \ debug-copy (y su referencia de proyecto) tienen el mismo número de versión idéntico al del GAC. – sisve

+0

Los números de AssemblyVersion son los mismos, he agregado comentarios adicionales que explican esta información clave, ¡me siento mal! – Ryan

Respuesta

1

Se podría tratar de hacer una <bindingRedirect> en su archivo .config a redirigir a su ensamblado local y no usar el que está instalado en el GAC.

Al compilar una aplicación de .NET Framework con un ensamblado de nombre seguro, la aplicación usa esa versión del ensamblado en tiempo de ejecución de forma predeterminada, incluso si hay una nueva versión disponible. Sin embargo, se puede configurar la aplicación se ejecute en contra de una nueva versión de la asamblea

...

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity 
      name="myAssembly" 
      publicKeyToken="32ab4ba45e0a69a1" 
      culture="neutral" /> 
     <bindingRedirect 
      oldVersion="1.0.0.0" 
      newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Esto también puede ser interesante para usted:

Espero que ayude!

+2

+1 ya que es una buena referencia (conocía los redireccionamientos de encuadernación) pero esto no me ayuda, ya que la versión en el GAC tiene la misma AssemblyVersion – Ryan

+0

Bueno, si la versión del ensamblado es la misma y no se puede cambiar no tiene muchas posibilidades porque .NET lo ubica primero desde el GAC. No es un comportamiento nUnit, es un .NET estándar. –

0

Lo que suelo hacer en esta situación es NO firmar el conjunto cuando estoy probando la unidad hasta que esté listo para desplegarlo. Es un proceso de un paso en el que se accede a las propiedades del proyecto y se borra la configuración Iniciar sesión. Cuando vuelva a compilar, la próxima vez que ejecute las pruebas, NUnit lo recogerá de una carpeta local bin, ya que los ensambles sin firmar no se pueden implementar en GAC. Lo que encontré es que incluso si ya tiene una versión del ensamblado en GAC, seguirá teniendo la versión sin firmar si hace referencia al ensamblaje que el proyecto está probando. Cuando termine con las pruebas, vuelva a activar e implementar la configuración.

No es ideal, ya que ahora tiene ese paso extra para pasar, pero lo más cerca que pude sin hacer un montón de trabajo.

Cuestiones relacionadas