miércoles, marzo 01, 2006

Problema en la referencia a ensamblados

De: Luis Aguayo
Asunto: Problema en la referencia a ensamblados

MENSAJE ORIGINAL

Estoy completamente desorientado respecto a como efectuar las referencias a
otros ensamblados en una aplicación de solución Windows Forms.

En la solución tengo lo siguiente:


- El projecto/ aplicación Windows Forms principal que es la que hace
referencias a otras bibliotecas de clases desarrollados por mi.


- Cuatro proyectos que son bibliotecas de clases/controles mencionados
arriba, por lo que se cuenta con el código fuente.


Incluyo las bibliotecas de clases en la solución junto con la aplicación
Windows Forms para poder depurar el código en esas bibliotecas de clases.


El problema es que cuando compilo la solución ("Volver a generar solución"
del menú "Generar") se supone que se compilan todas las bibliotecas de
clases y también el projecto Windows Forms.


Al compilar este ultimo, es decir, el projecto Windows Forms, se lanzan las
siguientes advertencias:


Advertencia: la dependencia 'MyControlLibraryXX, Version=1.0.1857.21278,
Culture=neutral, PublicKeyToken=8e029715e9db014e' del proyecto
'MyMainProject' no se puede copiar en el directorio de ejecución porque
reemplazaría la referencia 'MyControlLibraryXX, Version=1.0.1857.21768,
Culture=neutral, PublicKeyToken=8e029715e9db014e'.
Advertencia: la dependencia 'MyControlLibraryXX, Version=1.0.1857.21287,
Culture=neutral, PublicKeyToken=8e029715e9db014e' del proyecto
'MiMainProject' no se puede copiar en el directorio de ejecución porque
reemplazaría la referencia 'MyControlLibraryXX, Version=1.0.1857.21768,
Culture=neutral, PublicKeyToken=8e029715e9db014e'.


Asumo que al compilar de nuevo la librería de controles se crea
automáticamente una nueva versión, pero se supone que al copiarla al
directorio del projecto Windows Forms debe estar actualizada, por lo que no
debería marcar esa advertencia.


Por cierto, no fuera problema si solo fuera una advertencia, pero al
intentar ejecutar la aplicación el error es:


"Excepcion no controlada del tipo 'System.IO.FileLoadException' en
MyMainProject.exe.


Informacion adicional: La definicion del manifiesto del ensamblado con
nombre "MyControlLibraryXX" no coincide con la referencia del ensamblado.


Alguien me puede orientar a como arreglar este problema ? Lo peor es que
realmente no entiendo cual es el problema.


Gracias anticipadas
Luis Arvayo

SOLUCIÓN PROPUESTA

El problema se esta presentando porque en alguna compilación que realizas el Visual Studio detecta que la dll que va a substituir tiene una versión menor que la que ya tiene en su carpeta bin.

Algunas soluciones al respecto:

Primero que nada respalda tu proyecto no me gustaría que perdieras en el camino nada.

1era solución:

Me imagino en una sola solución se encuentran contenidos diversos proyectos.

Si es así

En el menú proyecto selecciona la opción Dependencias del Proyecto y proyecto por proyecto indica que proyectos deben ser compilados antes de que se compile el que esta seleccionado. Eso te va a generar el orden de generación del proyecto.

En muchas ocasiones esto soluciona la mayoría de los problemas con respecto a este tema.

Segunda Solución:
La segunda problemática se presenta cuando en proyectos distintos que hacen referencia a una misma dll pero en dos carpetas distintas. El ejemplo para este caso seria que el Proyecto A haga referencia a Midll en c:\Objetos\Midll\bin\ y el Proyecto B haga referencia a Midll en c:\MisRespaldos\Midll\bin. Si un proyecto dll hace referencia a ambos y los dll tienen versiones diferentes es muy probable que se presente este problema.

Tercera Solución
En algunas ocasiones he realizado las tareas anteriores y sigo con el problema. Y en este caso puede ser por las dll contenidas en las carpetas bin de cada proyecto ya que antes de substituirla verifica que la versión por la que piensas sustituir sea mayor que la anterior. En este caso la solución radica en borrar las dll y volver a compilar el proyecto.

Si sigues estos caminos es muy probable que encuentres la solución.

Espero esto resuelva tu problema.

Saludos

Raúl Guerrero

http://superneurona.blogspot.com

3 Comments:

At 4:14 PM, Anonymous Anónimo said...

Visualizar un textbox en formato currency

Por favor. alguien me puede ayudar?, necesito capturar en un textbox(web) montos de dinero con dos decimales alguien me puede ayudar??

 
At 2:33 PM, Anonymous Anónimo said...

gracias por tu ayuda funciono de la primera forma ... quite la referencia luego la volvi a agregar para que tome en nuevo manifiesto del assembly ... y luego ejecuto la pagina del principal de la solucion .. (si le doy F5 vuelvo a tener el mismo problema)

Thanks.

Elmer.

 
At 5:41 PM, Blogger Raúl Guerrero said...

Pregunta Elmer:

Se soluciono el problema o al presionar F5 sigue presentandose la misma situación????


Saludos

 

Publicar un comentario en la entrada

<< Home