jueves, 22 de noviembre de 2007

Could not load file or assembly 'CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified.

Could not load file or assembly 'CrystalDecisions.CrystalReports.Engine,
Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies.
The system cannot find the file specified.


Este error me dio cuando abri un proyecto vs 2005 en VS2008 y mantuve la compatibilidad al framework 2.0, al parecer no solo me convierte la solucion sino que me agrega unos nuevos dlls del engine de crystal para aplicaciones web y me convierte los archivos de reportes rpt de Crystal.

Que hay que hacer:

agregar en el web config la referencia de los assemblies viejos de 2005 en la seccion runtime como se muestra aquí:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.CrystalReports.Engine " publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="10.5.3700.0" newVersion="10.2.3600.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.CrystalReports.Shared" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="10.5.3700.0" newVersion=" 10.2.3600.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304"/>
<bindingRedirect oldVersion="10.5.3700.0" newVersion="10.2.3600.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>


y luego se reemplaza las referencias de los dlls viejos por los nuevos y se copia los archivos rpt del proyecto de 2005 original, Se compila la solución y listo todo funciona como debe.

Por lo demas VS 2008 parece muy estable y si corre lado a lado con las versiones anteriores de 2005. Si intentan instalar el runtime de crystal 2008 necesitan una produc key misterioso que no se sabe cual es o si instalar los de redistribución que viene en la media de VS 2008, les cambia el error por este:

Aquí la referencia de la solución parcial:
http://tim.mackey.ie/default,month,2007-05.aspx (Lo que no incluye me imagino porque no era sobre la version RTM que cambia los archivos rpt de crystal y es necesario copiar los originales a los que le hace backup).

Retrieving the COM class factory for component with CLSID {5FF57840-5172-4482-9CA3-541C7878AE0F} failed due to the following error: 800736b1.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {5FF57840-5172-4482-9CA3-541C7878AE0F} failed due to the following error: 800736b1.

Source Error:


An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:


[COMException (0x800736b1): Retrieving the COM class factory for component with CLSID {5FF57840-5172-4482-9CA3-541C7878AE0F} failed due to the following error: 800736b1.]    CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor() +182  [TypeInitializationException: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception.]    CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor() +0    LaUnion.Sistema.CajaYBancos.ServicioReporte.PreparaReportDocument(String pathReporte, DataSet dataSource, Hashtable fields) in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Code\Servicios\ServicioReporte.cs:260    LaUnion.Sistema.CajaYBancos.ServicioReporte.ReporteEnMemoria(String pathReporte, DataSet dataSource, Hashtable fields, ExportFormatType formatoSalidaImpresion) in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Code\Servicios\ServicioReporte.cs:251    LaUnion.Sistema.CajaYBancos.Operaciones.LiquidacionCajaChicaV3.Imprimir() in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Operaciones\LiquidacionCajaChicaV3.aspx.cs:947    LaUnion.Sistema.CajaYBancos.Operaciones.LiquidacionCajaChicaV3.BotonesLiquidacionCajaChica_Click(Object sender, BotonesLiquidacionCajaChicaEventArgs e) in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Operaciones\LiquidacionCajaChicaV3.aspx.cs:68    LaUnion.Sistema.CajaYBancos.BotonesLiquidacionCajaChicaCOM.OnPresionado(Object sender, BotonesLiquidacionCajaChicaEventArgs e) in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Componentes\CajaYBancos\BotonesLiquidacionCajaChicaCOM.ascx.cs:26    LaUnion.Sistema.CajaYBancos.BotonesLiquidacionCajaChicaCOM.CargarImprimir() in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Componentes\CajaYBancos\BotonesLiquidacionCajaChicaCOM.ascx.cs:314    LaUnion.Sistema.CajaYBancos.BotonesLiquidacionCajaChicaCOM.Opcion_Click(Object sender, EventArgs e) in C:\DevProjects\Guatemala\Main\Source\LaUnion.Sistema.CajaYBancos.AplicacionWeb\Componentes\CajaYBancos\BotonesLiquidacionCajaChicaCOM.ascx.cs:188    System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +90    System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +76    System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +177    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746 


Y allí no le he encontrado ninguna solución. Si la encuentran me avisan.

Code4Fun!,


Manolo Herrera

5 comentarios:

Unknown dijo...

debes instalar en el server este pack
C:\Archivos de programa\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5\

CRRedist2008_x64.msi
o
CRRedist2008_x86.msi

dependiendo de la maquina, suerte!!!

m@ntrax dijo...

Solo comento para dar las gracias por que comenzastes el post y deaminium cerró con broche de oro dando la solución más bonita. Soy nuevo en .net y no sabía que yo mismo tenía esos archivos.

Unknown dijo...

Hola!!

A mi me aparece exactamente el mismo error, pero es en un archivo .dtsx qu esta en un servidor, en el .dtsx tengo un script VB en el que necesito mandar llamar un .rpt

GRACIAS!!!

Could not load file or assembly 'CrystalDecisions.CrystalReports.Engine,
Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies.
The system cannot find the file specified.

Unknown dijo...

.... espero me puedan ayudar a resolverlo, ya que en este caso no aplica la misma solicion.

GRACIAS!!

claudio dijo...

Hola amigo, implementé tu solución en una aplicación windows (en el archovo app.config) y funcionó de maravilla. En mi caso cuando instalé crystal report para visual .net 2010, me malogró el cristal que tenia instalado y no funcionaba mi apliacación. Pero con la solución que tu diste, me fue de maravilla. Muchas gracias amigo