c# - studio - exception crystaldecisions crystalreports engine reportdocument
El inicializador de tipo para ''CrystalDecisions.CrystalReports.Engine.ReportDocument'' lanzó una excepción (16)
Estoy implementando una aplicación de escritorio para mis clientes que utiliza la API de Crystal Reports para mostrar e imprimir formularios. Estoy construyendo mi instalador utilizando InstallShield 2012. También he incluido el Framework .NET 4.0 junto con todos los ensamblajes de Crystal. Tengo 2 (un poco relacionadas) preocupaciones:
1) Siempre que intenté ejecutar la aplicación en la máquina cliente, obtengo el siguiente error:
The type initializer for ''CrystalDecisions.CrystalReports.Engine.ReportDocument''
threw an exception.
No tengo idea de lo que estoy olvidando aquí. El CrystalDecisions.CrystalReports.Engine
dll se está registrando correctamente en el GAC, al igual que otros 10 ensamblajes de Crystal.
2) Hice esta pregunta en los foros de SAP y me dijeron que necesitaba incluir el Framework .NET 2.0 junto con el Framework .NET 4.0. Intenté incluir el .NET 2.0 redistribuible en mi paquete de instalador, pero el instalador no lo instala. ¿El instalador ve que tengo instalado 4.0, por lo que omite la instalación 2.0?
Descargue cr redist 2005 o 2008 (que es su herramienta) o copie desde C: / Archivos de programa / Microsoft Visual Studio 8 / SDK / v2.0 / BootStrapper / Packages / CrystalReports
Descarga c ++ redist 2005 o 2008 (que es tu herramienta)
Instala ambos y reinicia tu sistema.
Problema resuelto.
Como "MA Hanin" dijo anteriormente, puede ser causado por una InnerException
como esta:
"Unrecognized configuration section userSettings. (C:/Users/Pourakbar.h/AppData/Local/Accounting/Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g/1.0.0.0/user.config line 3)"
y C:/Users/Pourakbar.h/AppData/Local/Accounting/Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g
la carpeta: C:/Users/Pourakbar.h/AppData/Local/Accounting/Accounting.vshost.exe_Url_a4h1gnabohiu4wgiejk0d21rc2kbwr4g
de mi computadora y ¡eso funcionó para mí!
Compruebe las propiedades de su proyecto en la plataforma de destino. Instala la versión correspondiente de Crystal Reports:
To x86 > CRforVS_redist_install_32bit
To x64 > CRforVS_redist_install_64bit
Cuando un constructor estático lanza una excepción, se TypeInitializationException
dentro de una TypeInitializationException
. InnerException
propiedad InnerException
del objeto de InnerException
para ver la excepción real.
En un entorno de ensayo / producción (donde no tiene instalado Visual Studio), deberá:
- Rastreo / registro de la excepción y su InnerException (recursivamente): agregue un controlador de eventos al evento
AppDomain.UnhandledException
, y coloque allí su código de registro / rastreo. UtiliceSystem.Diagnostics.Debug.WriteLine
para el seguimiento, o un registrador (log4net, ETW). DbgView (una herramienta de Sysinternals) se puede utilizar para ver la traza Debug.WriteLine. - Utilice un depurador de producción (como WinDbg o NTSD) para diagnosticar la excepción.
- Utilice la depuración remota de Visual Studio para diagnosticar la excepción (lo que le permite depurar el código en el equipo de destino desde su propio equipo de desarrollo).
El truco para mí fue cambiar la máquina de destino de "CUALQUIER CPU" a "x64" o tal vez en su caso "x86" según la arquitectura de la máquina de destino. Intentaría esto primero antes de pasar a una solución más compleja que indique un problema más complejo.
Esto es lo que funcionó para mí:
Si está instalando en una máquina de 64 bits, asegúrese de que las propiedades de la aplicación en la pestaña Generar tengan "Cualquier CPU" como objetivo de la plataforma y desmarque la casilla de verificación "Preferir 32 bits" si tiene la opción. Crystal es muy delicado con los ensamblajes de 32/64 bits, y hace algunas suposiciones bastante poco intuitivas que son muy difíciles de resolver.
Esto se debe a la falta de capacidad ... Si ve la excepción interna, verá este mensaje
"Access is denied.
Access to speech functionality requires ID_CAP_SPEECH_RECOGNITION to be defined in the manifest."
Así que para deshacernos de esta excepción. active la capacidad de reconocimiento de voz desde el archivo Manifest.
Tuve el mismo problema, y resolvió mi problema. :)
La excepción interna del error dice No se pudo cargar el archivo o el ensamblaje ''log4net, Versión = 1.2.10.0, Cultura = neutral, PublicKeyToken = 692fbea5521e1304''
Cambiar la configuración de AppPool Falso para habilitar la aplicación de 32 bits solucionó el problema
Me enfrenté al mismo problema. La plataforma de destino era Cualquier CPU en mi caso. Pero se marcó la casilla de verificación "Preferir 32 bits". Al desmarcar el mismo se resolvió el problema.
No estaba recibiendo el error en las máquinas de 32 bits, pero sí en 64 bits, así que cambié la plataforma de destino de x86 a Cualquier CPU y resolví el problema.
Por un día completo busqué en línea y encontré una solución por mi cuenta. En el mismo escenario, la aplicación funciona bien en la máquina del desarrollador, pero cuando se implementa está lanzando la excepción "crystaldecisions.crystalreports.engine.reportdocument lanzó una excepción" Detalles: sys.io.filenotfoundexcep crystaldecisions.reportappserver.commlayer versión 13.0.2000 no se encuentra
Mi IDE: MS VS 2010 Ultimate, CR V13.0.10
Solución:
configuro x86 para mi aplicación, luego establezco x64 para mi aplicación de configuración
Requisito previo: Coloqué el archivo de tiempo de ejecución CR compatible CRRuntime_32bit_13_0_10.msi, CRRuntime_64bit_13_0_10.msi en el siguiente directorio C: / Archivos de programa (x86) / Microsoft SDKs / Windows / v7.0A / Bootstrapper / Packages / Crystal Reports para .NET Framework 4.0
Incluir el archivo del módulo de fusión al proyecto de instalación. Aquí está la versión no es algo serio porque uso 13.0.10 soft, 13.0.16 fusionar el archivo del archivo del archivo que incluí: CRRuntime_13_0_16.msm Este archivo se encuentra uno entre los archivos msm establecidos.
Al instalar este módulo de combinación, se agregará la dll necesaria en el siguiente directorio C: / Archivos de programa (x86) / SAP BusinessObjects / Crystal Reports para .NET Framework 4.0 / Common / SAP BusinessObjects Enterprise XI 4.0 / win32_x86 / dotnet
La versión del archivo dll no causará ningún problema.
En tu máquina desarrollador lo confirma igual.
Necesito puntos de reputación, si esta respuesta es útil, márcala útil (+1)
Recibí un mensaje similar y después de varias búsquedas en línea y haciendo todas las sugerencias, nada ayudó. Finalmente encontré la solución. En mi servidor IIS, bajo la opción de avance del grupo de aplicaciones, hay una opción para "Habilitar aplicaciones de 32 bits", que se cambió de falso a verdadero y, después de reiniciar el servidor IIS, mi programa comenzó a generar archivos pdf.
Recientemente tuve un error similar con el error log4net:
No se pudo cargar el archivo o el ensamblaje ''log4net, Versión = 1.2.10.0, Cultura = neutral, PublicKeyToken = 692fbea5521e1304''
Esto estaba en una máquina de 64 bits, pero solo había instalado el tiempo de ejecución de 32bit
.
Asegurarme de que la compilación apuntara solo x86
funcionó para mí.
Tengo un problema El inicializador de tipo ... mi archivo de configuración lo resolvió ...
Olvidé tener un elemento de conexión como este
"connectionStrings" "/ connectionStrings" tal vez depende de lo que hiciste en un código. mi error es que no puedo abrir una clase debido a este elemento de conexión.
The type initializer for CrystalDecisions.CrystalReports.Engine.ReportDocument
lanzó una excepción .
Cambié la plataforma de destino de x86
a Any CPU
y resolvió el problema.