windows-8 - microsoft - visual studio installer
VS2012/Blend 5: depuración de una excepción(solo) que se produce en la vista de diseño (3)
Estoy desarrollando una aplicación estilo Metro (para Windows 8) usando C # y XAML. Configuré mis viewmodels para utilizarlos como contextos de datos en tiempo de diseño, así:
xmlns:vm="using:hub.ViewModels"
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type=vm:ViewModels
Mi aplicación parece funcionar perfectamente cuando se ejecuta, pero en las vistas de diseño de VS 2012 y Blend, ocasionalmente recibo este mensaje de error (no útil):
An Exception was thrown. TargetException: Error in the application.
Stacktrace
at System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
InnerException: None
Esto solo ocurre en la vista de diseño, lo que significa que no puedo establecer puntos de interrupción en todos mis eventos INotifyPropertyChanged ().
¿Cuál es el mejor enfoque para la depuración de errores de tiempo de diseño?
No estoy seguro, pero creo que puede verificar el campo IsInDesignModeProperty . Recuerdo tener que hacerlo en WinForms a veces.
También eche un vistazo a este enlace Solución de problemas de fallas de carga del diseñador WPF
Si esto ocurre de manera constante o semi consistente, puede adjuntar el depurador al diseñador de XAML:
Inicia Visual Studio; abra su proyecto y abra un archivo XAML, causando que el diseñador XAML cargue
Inicie una segunda instancia de Visual Studio. Abra su proyecto, pero asegúrese de que no haya ningún documento XAML abierto.
Asegúrese de que Just My Code esté desactivado: en el menú Herramientas , seleccione Opciones . Selecciona la categoría de depuración . En la página General , asegúrese de que la casilla de verificación al lado de Habilitar mi código esté desactivada.
Desde el menú Depurar , seleccione Excepciones ... y marque la casilla de verificación Lanzada junto a Excepciones de tiempo de ejecución de idioma común . Esto permitirá el manejo en primera oportunidad de todas las excepciones de CLR. Si conoce el tipo específico de la excepción, puede habilitar el manejo de primera oportunidad para ese tipo.
En el menú Depurar , seleccione Adjuntar a proceso . En el campo Adjuntar a , haga clic en Seleccionar ... y marque la entrada Administrado (v4.5, v4.0) en la lista y haga clic en Aceptar .
Esto es necesario porque el depurador puede detectar incorrectamente el proceso como un proceso nativo si se conecta mientras el proceso está ejecutando código nativo. Si su proyecto contiene código nativo, también querrá marcar la casilla de verificación Nativo en la lista (puede depurar código administrado y nativo al mismo tiempo).
En el cuadro de lista Procesos disponibles , busque xdesproc.exe que corresponda a su proyecto y haga clic en Adjuntar .
Si hay varios procesos (generalmente porque tiene varios proyectos abiertos o porque el diseñador está recargando o ha vuelto a cargar recientemente), puede ser difícil determinar qué proceso de diseñador pertenece a qué instancia de Visual Studio. A menudo es más fácil unirse a todos ellos. Una herramienta como Process Explorer puede ayudarlo a determinar qué proceso de diseñador pertenece a qué instancia de Visual Studio.
Nota: No adjunte el depurador a un proceso de diseñador (xdesproc) que pertenece a la misma instancia de Visual Studio que está utilizando para la depuración: es probable que esto provoque que Visual Studio se cuelgue. Siempre debe usar dos instancias diferentes de Visual Studio.
Haz lo que necesites para reprogramar el error. Cuando ocurre, el depurador se romperá en el punto donde se lanza la excepción. El depurador debe cargar los símbolos para sus ensamblajes.
Llegué aquí mientras buscaba información sobre cómo depurar problemas de instancias de tiempo de diseñador, aunque no tuve el mismo problema que rikkit. Pero ... estoy compartiendo la solución a un problema relacionado solo en caso de que otros tengan el mismo problema lleguen aquí también:
Asegúrese de tener habilitado el parámetro "Habilitar / deshabilitar código de proyecto" en "habilitado" ... en VS / Blend 2015 es un pequeño icono debajo del editor XAML como se muestra aquí .
Si está deshabilitado, esta podría ser la razón por la cual su instancia de tiempo de diseño no parece estar funcionando.
Además, si está deshabilitado e intenta depurar usando una segunda instancia de VS, entonces cuando se conecte al XDesProc, cualquier punto de interrupción que establezca en el código subyacente informará que "actualmente no se afectará. [Porque] no se han activado los símbolos. cargado para este documento ". Puede pensar que necesita cargar los símbolos de alguna manera, pero si abre la ventana Módulos intentando hacerlo, ni siquiera verá su módulo en la lista.
Perdí un par de horas sobre este problema debido a que esta configuración está deshabilitada. Espero que esto ayude a otros a no hacer lo mismo.