remarks method c# .net visual-studio-2010 clr dynamics-crm-2011

c# - method - El tiempo de ejecución de lenguaje común no pudo establecer el punto de interrupción



remarks c# (7)

Esta es en realidad otra parte de esta pregunta.

Ajustes de error en los puntos de interrupción pero solo en algunas líneas al depurar

Soy una depuración remota de un complemento de CRM 2011 en vs 2010.

En uno de mis archivos de origen, puedo establecer puntos de interrupción en todo el código, excepto en algunos lugares.

Cuando intento establecer un punto de interrupción, aparece este error "No se puede establecer el siguiente punto de interrupción" y "El Common Language Runtime no pudo establecer el punto de interrupción".

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

ACTUALIZACIÓN También, en la ventana de módulos muestra la dll como Optimizada: No Código de Usuario: Sí Estado del Símbolo: Símbolos cargados


Acabo de tener una experiencia similar y la forma en que trabajé a través de ella fue poner un punto de interrupción en el lugar donde se llamó la rutina y luego pisé la rutina hasta que vi exactamente lo que pensaba que estaba haciendo. En mi caso, hubo una devolución que impedía que se ejecutara todo el código de la rutina, por lo que el optimizador lo tiró todo. A veces son las cosas estupidas, ¿verdad? De todos modos, si comienzas en un nivel más alto en la pila de llamadas y entras en la rutina donde está el problema, la razón del problema podría ser más obvia.


Además de su actualización sobre la optimización de la DLL, las líneas que ha indicado donde no funcionan los puntos de interrupción probablemente se optimizarán, ya que toda su instrucción de conmutación no hace otra cosa. Otros deciden si asignar o no un valor a una variable que nunca se usa y no vive más allá del alcance de la instrucción switch. Como tal, el compilador simplemente no generará ningún código para la instrucción switch ya que no hace nada en absoluto o el jit simplemente se deshace de él en tiempo de ejecución por la misma razón.


Dos posibilidades, ya referenciadas por las otras respuestas:

  1. Asegúrese de que está utilizando la compilación de depuración del conjunto en lugar de la compilación de la versión, ya que la compilación de la versión eliminará u optimizará su código.
  2. Asegúrese de actualizar la versión cada vez que implemente los ensamblajes en Visual Studio (en la pestaña de propiedades del proyecto). Cuando incremente la versión, CRM se asegurará de descargar la versión de ensamblaje anterior y volver a cargar la nueva sin un reinicio de IIS.

Obtuve este problema cuando creé un punto de interrupción utilizando el acceso directo Ctrl+B (ver imagen adjunta), e ingresé un nombre de una función que no existe, por lo que el punto de interrupción se agregó pero causó un error. Luego, cada vez que comencé el proyecto apareció ese error.

Solución: eliminé el punto de interrupción de la lista de puntos de interrupción (vea la parte inferior izquierda de la imagen adjunta), seleccione la sección de los puntos de interrupción, luego seleccione el elemento y haga clic en eliminar.

Si no ve la sección de puntos de interrupción.

Puedes recuperarlo Ctrl+Alt+B


Otra causa de este problema que acabo de encontrar si está depurando contra CRM es que no está actualizando los puntos de registro del complemento. Incluso si copia las nuevas DLL en la máquina de destino y las conecta de forma remota a ese proceso que no es la DLL que usará CRM. CRM intentará obtener una copia de una versión anterior de su base de datos hasta que vuelva a ejecutar los registros del complemento.

¡Un error que desperdicié un día y medio para mí!


Recibí este error cuando comienzo a ejecutar la depuración del proyecto, y lo soluciono con Limpiar todo el proyecto y Reconstruir todo el proyecto, después de reconstruir el error desaparece.


Tuve este mismo problema cuando tuve el proyecto abierto en dos instancias de Visual Studio. El proyecto que no estaba depurando tenía un bloqueo en el archivo y me notificaba "Este archivo se ha modificado fuera del editor de origen". Después de aceptar los cambios en mi solución sin depuración, ya no recibí el error y mis puntos de interrupción se vieron afectados en mi solución que estaba depurando.

Parece que hay muchas causas posibles para este error, pero esto lo hizo por mí.