2012-02-11 36 views
22

OK, así que creé una aplicación C# y la instalé en mi cuadro de prueba. Mi aplicación funciona perfectamente en mi cuadro dev, pero cuando instalo en una máquina diferente, se bloquea en Main(). Me da la EventType: clr20r3Aplicación de Windows C# Evento: CLR20r3 en el inicio de la aplicación

aquí es el mensaje de evento

Problem signature: 
    Problem Event Name: CLR20r3 
    Problem Signature 01: logfileviewer.exe 
    Problem Signature 02: 1.0.0.0 
    Problem Signature 03: 4f356c9c 
    Problem Signature 04: LogFileViewer 
    Problem Signature 05: 1.0.0.0 
    Problem Signature 06: 4f356c9c 
    Problem Signature 07: 94 
    Problem Signature 08: 44 
    Problem Signature 09: System.IO.FileNotFoundException 
    OS Version: 6.1.7601.2.1.0.256.1 
    Locale ID: 1033 
    Additional Information 1: 0a9e 
    Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 
    Additional Information 3: 0a9e 
    Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 

utilicé los detalles y busqué el código de error en la IL desensamblador y la leva de vuelta con el siguiente ...

Method #5 (06000094) 
    ------------------------------------------------------- 
    MethodName: .ctor (06000094) 
    Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886) 
    RVA : 0x000081d0 
    ImplFlags : [IL] [Managed] (00000000) 
    CallCnvntn: [DEFAULT] 
    hasThis 
    ReturnType: Void 
    No arguments. 

.NET 4.0 se ha desinstalado y reinstalado en el sistema y no ha cambiado nada. He buscado en toda la red y todos con el mismo problema no parecen tener una solución. Ahora he pasado un día y medio en este problema. No me gustaría perder mi fecha límite para no poder iniciar la aplicación.

Este es el único código en mi principal()

static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new frmMain()); 
    } 

Aquí están los detalles del Visor de sucesos

Application: LogFileViewer.exe 
    Framework Version: v4.0.30319 
    Description: The process was terminated due to an unhandled exception. 
    Exception Info: System.IO.FileNotFoundException 
    Stack: 
     at LogFileViewer.frmMain.InitializeComponent() 
     at LogFileViewer.frmMain..ctor() 
     at LogFileViewer.Program.Main() 

EventData

Application: LogFileViewer.exe 
    Framework Version: v4.0.30319 
    Description: The process was terminated due to an unhandled exception. 
    Exception Info: System.IO.FileNotFoundException 
    Stack: at LogFileViewer.frmMain.InitializeComponent() at LogFileViewer.frmMain..ctor() at LogFileViewer.Program.Main() 

No estoy seguro de cómo el diseñador puede tener una excepción FileNotFound. Estoy usando DotNetBar.dll y lo estoy haciendo referencia fuera del directorio de instalación, así que debería ser bueno. Puedo publicar mi diseñador si quieres, pero hay bastante allí. alguien tiene alguna idea?

+2

Capture esa excepción FileNotFoundException y vea sus detalles para comprender qué archivo falta. Apuesto a que es DotNetBar.dll – tenorsax

+0

Sí, era DotNetBar. Tuve que moverlo a la raíz de las aplicaciones a pesar de que estaba haciendo referencia a él desde una carpeta llamada "recursos". – Tyler

Respuesta

20

He visto este mismo problema cuando mi aplicación dependía de un ensamblado al que se hace referencia que no estaba presente en la máquina de implementación. No estoy seguro de lo que quiere decir con "hacer referencia a DotNetBar fuera del directorio de instalación" - asegúrese de que esté configurado en CopyLocal=true en su proyecto, o que exista en la misma ruta completa en su máquina de desarrollo y producción.

+0

Sí, o puede probar una herramienta como ensamblaje inteligente que permite incrustar dependencias en su ejecutable además de ofuscarlo para que sepa si fue causado por un DLL faltante. – Digvijay

+0

Aunque estoy haciendo referencia a DotNetBar.dll desde una carpeta de recursos que he creado. Parece que en realidad tengo que tener el .dll en el directorio raíz donde reside mi .exe. No tengo explicación para esto. Tal vez alguien me puede iluminar sobre la razón. Para otros con el mismo problema. Mueva los archivos .dll a los que hace referencia a su carpeta raíz y vea si eso resuelve su problema. – Tyler

+0

[Esto podría ayudar] (http://msdn.microsoft.com/en-us/library/yx7xezcf (v = vs.71) .aspx) – RyanR

0

He estado luchando con esto toda la mañana y ahora lo tengo resuelto y por qué sucedió. Publicar con la esperanza de que ayuda a los demás

Instalé el Krypton.Toolkit que agregó las herramientas a la caja de herramientas de Visual Studio automáticamente. Luego agregué las herramientas al diseñador, que automáticamente agregó el dll a las referencias de projrect; sin embargo, el kit de herramientas fue marcado como CopyLocal = falso

Creé un instalador, usando todos los archivos DLL en la carpeta de versiones (por supuesto, el anterior dll no estaba allí).

Configurando copylocal = true, luego reconstruyendo el instalador, todo funcionó bien.

3

Me encontré con el mismo problema cuando construí una aplicación en una caja de Windows 7 que se había mantenido previamente en una máquina con XP.

El programa se ejecutó correctamente cuando se creó para Debug, pero falló con este error cuando se creó para Release. Encontré la respuesta en la página de propiedades del proyecto. Vaya a la pestaña "Crear" e intente cambiar el objetivo de la plataforma de "Cualquier CPU" a "x86".

-6

para resolver el problema clr20r3 set - Local User Policy \ Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options - System cryptography: Uso FIPS 140 algoritmos de cifrado compatibles, incluyendo codificación, algoritmos hash y firma - Desactivar

3

.NET tiene dos CLR 2.0 y 4.0. CLR 2.0 funciona hasta .NET framework 3.5. CLR 4.0 funciona desde .NET 4.0 en adelante. Es posible que su solución esté usando un CLR diferente al de sus ensambles de referencia. En su entorno de desarrollo local, puede tener los dos CLR y, por lo tanto, no tuvo ningún problema. Sin embargo, cuando se movió a entornos de despliegue, es posible que solo tengan un CLR único y este error.

+0

Para que otros lo vean: Puede intentar solucionar esto actualizando su referencia ensambles en lugar de requerir que el cliente instale el CLR anterior. Mi compañero de trabajo estaba actualizando un proyecto a 4.5 y teniendo este problema. Mi primer reflejo fue "¿actualizó sus paquetes nuget?" bastante seguro.... –

Cuestiones relacionadas