web-dev-qa-db-fra.com

le common language runtime n'a pas pu définir le point d'arrêt

C'est en fait une autre partie de cette question.

Erreur lors de la mise au point de points d'arrêt pour les paramètres, mais uniquement sur certaines lignes

Je débogue à distance un plugin CRM 2011 en 2010.

Dans l'un de mes fichiers source, je peux définir un point d'arrêt tout au long du code, sauf à quelques endroits. 

Lorsque j'essaie de définir un point d'arrêt, j'obtiens le message d'erreur "Le point d'arrêt suivant ne peut pas être défini:" et "Le Common Language Runtime n'a pas pu définir le point d'arrêt."

protected override void ExecutePlugin()
{
    SetStateResponse response = new SetStateResponse(); // Breakpoint works

    // Message switch
    switch (_crmMessage) // Breakpoint error
    {
        case CrmPluginMessageEnum.Create:

        Entity pimage = null; // Breakpoint error
        if (_context.PostEntityImages.ContainsKey("postcreate")) // Breakpoint works
            pimage = _context.PostEntityImages["postcreate"]; // Breakpoint error

        break; // Breakpoint error
        }
} // Breakpoint error

UPDATE De plus, dans la fenêtre des modules, il affiche la dll optimisée: Non Code utilisateur: Oui Symbole Statut: Symboles chargés

25
user1231231412

Deux possibilités, déjà un peu référencées par les autres réponses:

  1. Assurez-vous que vous utilisez la version Debug de Assembly au lieu de La version Release, car la version Release supprimera ou optimisera votre code. 
  2. Assurez-vous de mettre à jour la version à chaque Déploiement des assemblys dans Visual Studio (onglet Propriétés du projet). Lorsque vous incrémentez la version, CRM veillera à décharger l'ancien Version d'assemblage et recharger le nouveau sans IIS réinitialisation.
32
Josh Painter

J'ai eu ce problème lorsque j'ai créé un point d'arrêt à l'aide du raccourci Ctrl+B (voir l'image ci-jointe) et que j'ai entré le nom d'une fonction qui n'existe pas. Le point d'arrêt a donc été ajouté mais a provoqué une erreur. puis chaque fois que j'ai commencé le projet, cette erreur est apparue. 

Solution: J'ai supprimé le point d'arrêt de la liste des points d'arrêt (voir en bas à gauche dans l'image ci-jointe), sélectionnez la section Points d'arrêt, puis sélectionnez l'élément et cliquez sur Supprimer.  enter image description here

Si vous ne voyez pas la section des points d'arrêt

Vous pouvez le récupérer en appuyant sur Ctrl+Alt+B 

3
Mayer Spitzer

J'ai eu le même problème lorsque le projet a été ouvert dans deux instances de Visual Studio. Le projet que je ne déboguais pas avait un verrou sur le fichier et me notifiait "Ce fichier a été modifié en dehors de l'éditeur de source." Après avoir accepté les modifications de ma solution de non-débogage, je ne recevais plus l'erreur et mes points d'arrêt étaient atteints dans ma solution que j'étais en train de déboguer.

Il semble y avoir beaucoup de causes possibles à cette erreur, mais cela l’a fait pour moi.

3
Brian G

Je viens de vivre une expérience similaire et j’ai travaillé à mettre un point d’arrêt à l’endroit où la routine était appelée, puis à entrer seul dans la routine jusqu’à ce que je voie exactement ce qu’elle pensait faire. Dans mon cas, il y avait un retour qui empêchait tout le code de la routine de s'exécuter, aussi l'optimiseur l'a-t-il jeté. Parfois, ce sont les choses stupides, non? Quoi qu'il en soit, si vous commencez à un niveau plus élevé dans la pile d'appels et que vous entrez dans la routine où se trouve le problème, la raison du problème peut devenir plus évidente.

0
Andy

Suite à votre mise à jour sur le DLL en cours d'optimisation, les lignes que vous avez indiquées sur lesquelles les points d'arrêt ne fonctionnent pas seront probablement optimisées car l'ensemble de votre instruction switch ne fait rien d'autre que de décider d'attribuer ou non une valeur. une variable qui n'est jamais utilisée et qui ne vit pas au-delà de la portée de l'instruction switch. En tant que tel, le compilateur ne générera simplement aucun code pour l'instruction switch car il ne fait rien du tout ou le jit s'en débarrasse simplement au moment de l'exécution pour la même raison.

0
Ben Robinson

Une autre cause de ce problème que je viens de découvrir si vous déboguez contre CRM n’est pas la mise à jour des points d’enregistrement du plug-in. Même si vous copiez les nouvelles DLL sur la machine cible et que vous vous attachez à distance à ce processus, ce n'est pas le DLL CRM que vous utiliserez. CRM essaiera de prendre une copie d'une ancienne version de sa base de données jusqu'à ce que vous réexécutiez les enregistrements du plug-in.

Une erreur qui m'a fait perdre un jour et demi!

0
Jarvis Brand

J'ai eu cette erreur lorsque démarrer exécuter déboguer le projet, et je le résous par Clean All Project et Rebuild All Project, après avoir reconstruit l'erreur disparaître.

0
yu yang Jian