le common language runtime a été incapable de définir le point d'arrêt
C'est en fait une autre partie de cette question.
Erreur les paramètres des points d'arrêt, mais seulement sur certaines lignes pendant le débogage
Je suis de débogage à distance d'un CRM 2011 plugin dans vs 2010.
Je'n un de mes fichiers sources, je peux définir un point d'arrêt dans tout le code, sauf dans quelques endroits.
Quand j'ai essayer de mettre un point d'arrêt, j'obtiens cette erreur
"Le point d'arrêt suivant ne peut pas être définie:" et "Le Common Language Runtime a été incapable de 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
Mise à JOUR
Aussi, dans la fenêtre modules il montre la dll comme Optimisé: Pas de Code d'Utilisateur: Oui Statut des symboles: Symboles Chargés
- S'il vous plaît, ajouter votre code! Il y a beaucoup de cas (comme le lambda-expressions, la déclaration de la variable sans initialisation par exemple), où vous ne pouvez pas définir un point d'arrêt normalement.
- blogs.msdn.com/b/habibh/archive/2009/09/01/...
- F9 fait la même chose. Vérifier le lien en question pour voir un exemple de code.
- Vérifié ce n'est pas la question.
- Vérifier le lien en question pour voir un exemple de code.
- Quand il dit "Le point d'arrêt suivant ne peut pas être définie" vous essayez de définir un point d'arrêt à un endroit qui ne compile pas pour tout code réel, par exemple sur une déclaration de variable ou juste un espace blanc. L'exacte ligne de code où vous ne pouvez pas définir le point d'arrêt.
- mise à jour
- Si vous faites le débogage à distance, est-il possible que votre fichier PDB est hors de synchronisation avec la DLL compilée? Votre essayé de supprimer votre corbeille et les fichiers obj et de le recompiler?
- Êtes-vous sûr à 100% que la DLL correspond au code source, avez-vous correctement déployé le brancher, le fait que certains des points d'arrêt de travail et d'autres ne suggère que la DLL est pas à jour ou peut-être le fichier de symboles n'ont pas été mis à jour.
- J'ai fait sûr à 100% le .apb correspond à l' .dll je suis de débogage.
- J'ai aussi utilisé un réflecteur et tout semble parfait.
Vous devez vous connecter pour publier un commentaire.
Deux possibilités, déjà référencé par les autres réponses:
la version Release, parce que la Libération de construire à retirer ou à optimiser
votre code.
déployer les assemblées dans Visual Studio (sur les propriétés du projet, onglet).
Lorsque vous incrémenter le numéro de version, CRM veillez à décharger le vieux
la version de l'assembly et recharger le nouveau sans une réinitialisation des services internet.
J'ai eu ce problème lorsque j'ai eu le projet de ouvert en de deux instances de Visual Studio. Le projet dont je n'étais pas le débogage avait un verrou sur le fichier et me notifiant "Ce fichier a été modifié en dehors de l'éditeur de source." Après avoir accepté les changements de ma non-débogage de solution, je n'ai plus reçu le message d'erreur et mes points d'arrêt ont été frappés dans ma solution que j'ai été le débogage.
Il sonne comme il y a beaucoup de causes possibles de cette erreur, mais cela n'a pour moi.
J'ai eu ce problème quand j'ai créé un point d'arrêt à l'aide de la
Ctrl+B
raccourci (voir image ci-jointe), et j'ai entré un nom d'une fonction qui n'existe pas, de sorte que le point d'arrêt a été ajouté, mais a provoqué une erreur. à chaque fois que j'ai commencé le projet, il est apparu que l'erreur.Solution:
J'ai supprimé le point d'arrêt de la liste des points d'arrêt (voir en bas à gauche de l'image ci-jointe), sélectionnez les points d'arrêt, puis sélectionnez l'élément et cliquez sur supprimer.
Si vous ne voyez pas les points d'arrêt
Vous pouvez les récupérer en les frappant
Ctrl+Alt+B
Suite à votre mise à jour sur la DLL être optimisé les lignes que vous avez indiquées, le cas des points d'arrêt ne fonctionnent pas sera probablement optimisé loin comme l'ensemble de votre instruction switch ne rien faire d'autre de décider si ou de ne pas affecter une valeur à une variable qui n'est jamais utilisé et ne pas vivre au-delà de la portée de l'instruction switch. En tant que tel, le compilateur ne sera tout simplement pas générer un code pour l'instruction switch comme il ne se passe rien du tout ou le jit juste de se débarrasser d'elle au moment de l'exécution pour la même raison.
J'ai juste eu une expérience similaire et la façon dont j'ai travaillé à travers elle devait mettre un point d'arrêt à l'endroit où la routine a été appelé puis entra dans la routine jusqu'à ce que j'ai vu exactement ce qu'il pensait faire. Dans mon cas, il y a un retour qui empêche tout le code dans la routine en cours d'exécution, l'optimiseur jeté tout. C'est parfois les choses stupides, non? De toute façon, si vous commencez à un niveau plus élevé dans la pile d'appel et l'étape dans la routine où est le problème, la raison pour laquelle le problème pourrait être plus évident.
Une autre cause de ce problème j'ai juste trouvé si vous êtes le débogage contre le CRM n'est pas la mise à jour du plugin, l'enregistrement des points. Même si vous copiez la nouvelle Dll à la machine cible et de l'attacher à distance de ce processus qui n'est pas la DLL CRM va utiliser. CRM va essayer de prendre une copie d'une ancienne version de sa base de données jusqu'à ce que vous exécutez à nouveau le plugin enregistrements.
Une erreur qui gâche une journée et demi pour moi!
J'ai eu cette erreur quand on commence à courir le débogage du projet, et je le résoudre par Nettoyer Tout Projet et de Tout Reconstruire Projet, après la reconstruction de l'erreur disparaît.