¿Qué DLL Aspx uso del compilador cuando una DLL se hace referencia a una, sino varias versiones existen en la carpeta del compartimiento

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

Pregunta

Tengo una aplicación Web ASP.NET que tiene una referencia a 'C: \ \ referencias Utils.Varia.dll'. Hay otro DLL referencia que utiliza la versión firmada de este DLL ( 'C: \ \ referencias Utils.Varia.Signed.dll').

Ahora, en mi aspx tengo los siguientes importaciones Directiva: <% @ Import Namespace = "Utils.Varia" %>

Esta página utiliza una extensión de cadena a partir de las Utils.Varia.StringExtensions ExtensionClass.

Pero en tiempo de ejecución me sale el siguiente error:

  

Compilación de error

     

Descripción: Se ha producido un error durante   la compilación de un recurso requerido   para atender esta solicitud. Por favor revise   los siguientes detalles de error específicos   y modificar el código fuente   apropiadamente.

     

Compilador mensaje de error: CS0121: El   llamada es ambigua entre el   siguiendo métodos o propiedades:   'CONCENTRA.UTILS.StringExtensions.ToShortReadableString (cadena,   int)' y   'CONCENTRA.UTILS.StringExtensions.ToShortReadableString (cadena,   int) '

Así que mi conjetura es que el compilador no sabe si tomar el método de extensión de la firma o el archivo DLL estándar.

¿Es esta suposición correcta y si es así, ¿cómo me apunto a la DLL correcta?

[Editar]
Lo extraño es que este error del compilador sólo ocurre en código dentro del archivo aspx. Si utilizo la misma función en el código subyacente, todo funciona como se esperaba. ¿Puede alguien explicar esto, por favor?

También, puede no sólo hacer referencia a la versión firmada en su lugar porque en realidad utilizando la versión firmada es la excepción, todos los demás componentes utilizan el signo (aparte de 1 al parecer).

¿Fue útil?

Solución

Parece que usted ha ido a un montón de problemas para resucitar a propósito "DLL Hell" en su aplicación, de forma predeterminada cuando .NET hace que sea fácil para evitarlo. ¿Por qué tienes dos versiones de la misma asamblea se hace referencia en la misma aplicación?

Es necesario eliminar una de esas referencias (lo más probable, debe ser el que sin signo que se retira), y sólo tiene que utilizar el código de eso. O cambiar la otra por lo que su código es diferente.

Otros consejos

Cambiar la aplicación web para hacer referencia a la versión firmada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top