web-dev-qa-db-fra.com

Application Windows C # Evénement: CLR20r3 au démarrage de l'application

OK, j'ai donc créé une application c # et je l'ai installée sur ma boîte de test. Mon application fonctionne parfaitement sur ma boîte de dev, mais lorsque je l'installer sur une machine différente, elle se bloque dans le Main (). Je reçois le type d'événement: CLR20r3

voici le message de l'événement

    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

J'ai utilisé les détails et cherché le code d'erreur dans IL Disassembler, puis j'ai renvoyé le code suivant ...

    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 a été désinstallé et réinstallé sur le système et n’a rien changé. J'ai cherché partout sur le net et tout le monde avec le même problème ne semble pas avoir de solution. J'ai maintenant passé un jour et demi sur ce problème. Je ne voudrais pas manquer mon échéance, c'est-à-dire ne pas pouvoir lancer l'application.

C'est le seul code dans ma main ()

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

Voici les détails de l'observateur d'événements

    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() 

Vous ne savez pas comment le concepteur peut avoir une exception FileNotFound. J'utilise DotNetBar.dll et je le référence en dehors du répertoire d'installation, donc ça devrait être bon. Je peux poster mon designer si vous voulez, mais il y en a pas mal… .. Quelqu'un a une idée?

23
Tyler

J'ai constaté le même problème lorsque mon application dépendait d'un assembly référencé qui n'était pas présent sur la machine de déploiement. Je ne suis pas sûr de ce que vous entendez par "référencer DotNetBar hors du répertoire d'installation" - assurez-vous qu'il soit défini sur CopyLocal = true dans votre projet ou qu'il existe sur le même chemin complet sur votre machine de développement et de production.

21
RyanR

J'ai rencontré le même problème lorsque j'ai créé une application sur une machine Windows 7 précédemment gérée sur une machine XP.

Le programme a fonctionné correctement lorsqu’il a été créé pour Debug, mais a échoué avec cette erreur lorsqu’il a été construit pour Release. J'ai trouvé la réponse sur la page Propriétés du projet. Allez dans l'onglet "Construire" et essayez de changer la cible de la plate-forme de "Tout processeur" à "x86".

3
Dale Lutes

.NET a deux CLR 2.0 et 4.0. CLR 2.0 fonctionne jusqu'au .NET Framework 3.5. CLR 4.0 fonctionne à partir de .NET 4.0. Il est possible que votre solution utilise un CLR différent de celui de vos assemblages de référence. Dans votre environnement de développement local, vous pouvez avoir les deux CLR et par conséquent, vous n’avez rencontré aucun problème. Toutefois, lorsque vous passez aux environnements de déploiement, ceux-ci peuvent ne comporter qu'un seul CLR et vous obtenez cette erreur.

3
xs2mayank

Je me suis battu toute la matinée et maintenant, on résout le problème et pourquoi cela s’est produit. Publier avec l'espoir d'aider les autres 

J'ai installé le Krypton.Toolkit qui a ajouté les outils à la boîte à outils Visual Studio automatiquement. J'ai ensuite ajouté les outils au concepteur, ce qui a automatiquement ajouté la dll aux références de projet, mais la boîte à outils a été marquée comme CopyLocal = false

J'ai construit un programme d'installation, en utilisant toutes les dll du dossier de construction (bien sûr, les dll ci-dessus n'y étaient pas).

Définir copylocal = true, puis reconstruire l’installateur, tout a bien fonctionné.

0
Martin