Compartir a través de


Depurar aplicaciones de Expression Blend

Si el comportamiento de la aplicación de Microsoft Expression Blend no es el esperado o si se producen errores al intentar probar la aplicación, esto se debe a que existen errores en la propia aplicación. Puede ser difícil comprender la causa de un error o saber dónde se encuentra dentro de la aplicación, pero resulta útil entender los tipos de errores con los que se puede encontrar.

Errores de sintaxis

Al generar la aplicación, los errores de sintaxis se muestran en la ficha Errores del panel Resultados de Expression Blend o en el panel Lista de errores de Microsoft Visual Studio 2008.

Los errores de sintaxis se producen cuando el código o lenguaje de marcado de aplicaciones extensible (XAML) no cumple las reglas de formato del lenguaje. La descripción del error puede ayudarle a solucionarlo. La descripción especifica también el nombre del archivo y el número de línea en que se produce el error. Entre las causas comunes de errores de sintaxis, figuran las siguientes:

  • Una palabra clave tiene errores ortográficos o el uso de las mayúsculas no es correcto.

  • Faltan las comillas en cadenas de texto.

  • A un elemento XAML le falta una etiqueta de cierre.

  • Un elemento XAML está en una ubicación no permitida. Puede evitar estos errores si edita sus documentos en la vista Diseño en Expression Blend o en Visual Studio 2008.

  • En un archivo de código, una llamada a un método o una función no incluye los parámetros necesarios. Por ejemplo, el método MessageBox.Show() debe tener al menos un parámetro, como una cadena, MessageBox.Show("Hello").

  • En un archivo de código, se asigna una variable de un tipo a un tipo distinto. Por ejemplo, el método MessageBox.Show() puede tener un argumento de cadena, pero no un argumento de entero.

  • En C#, un método que no necesita argumentos podría no tener llaves al final. Por ejemplo, this.InitializeComponent; provocará un error de sintaxis porque la línea correcta es this.InitializeComponent();.

Para obtener información acerca de la sintaxis de XAML, vea los temas de información general acerca de controles individuales en el tema sobre la biblioteca de controles de la sección sobre Windows Presentation Foundation en MSDN. Para obtener información sobre la sintaxis de programación, puede buscar palabras clave del código en MSDN.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Errores de compilación

Al generar la aplicación, los errores de compilación se muestran en la ficha Errores del panel Resultados de Expression Blend o en el panel Lista de errores de Visual Studio 2008.

Los errores de compilación se producen cuando el sistema de compilación de Expression Blend o Visual Studio 2008 no encuentra algo que requiere el proyecto. Por ejemplo, si en el proyecto WPF falta una referencia a ensamblados de WPF, puede que aparezca un error del tipo "El nombre 'Window' no existe en el espacio de nombres 'https://schemas.microsoft.com/winfx/2006/xaml/presentation'". Si recibe este error, puede hacer clic en Agregar referencia en el menú Proyecto para agregar referencias a los siguientes ensamblados WPF de la carpeta C:\Archivos de programa\Reference Assemblies\Microsoft\Framework\v3.5:

  • PresentationCore.dll

  • PresentationFramework.dll

  • WindowsBase.dll

Si siguen apareciendo errores del tipo "El nombre '<miembro>' no existe en el contexto actual", es posible que falte otra referencia de ensamblado o que sea necesario agregar una instrucción using (C#) o Imports (Visual Basic .NET) al código para el espacio de nombres que falta. Para averiguar cuál es el ensamblado o el espacio de nombres necesario, vea en el tema de referencia de MSDN correspondiente al miembro que causa el error.

Entre las otras comunes de errores de compilación, figuran las siguientes:

  • Una palabra clave tiene errores ortográficos o el uso de las mayúsculas no es correcto.

  • No se hace referencia correctamente a una clase en la aplicación. Por ejemplo, si la aplicación usa una clase personalizada que se implementa en un archivo de código .cs o .vb independiente con su propio espacio de nombres (o en el caso de un proyecto Microsoft Silverlight 1.0, en un archivo de código .js), los documentos de la aplicación que usen esa clase personalizada tendrán que incluir una línea como la siguiente, donde FullyQualifiedNamespace es el espacio de nombres del archivo de código:

    xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace"
    
  • Las opciones del compilador no están configuradas correctamente o el sistema no es capaz de generar aplicaciones basadas en Microsoft .NET Framework. Si tiene instalado Microsoft .NET Framework 3.5 y desea generar la aplicación mediante Expression Blend o Visual Studio 2008, no debería haber ningún problema.

  • No se guardó un archivo antes de intentar generar el proyecto. Por ejemplo, si usa el panel EventosCc294906.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(es-es,Expression.10).png de Expression Blend para generar un nuevo método de control de eventos en el archivo de código subyacente (abriendo por tanto el archivo de código subyacente en Visual Studio) e intenta generar el proyecto en Expression Blend sin guardar antes el archivo de código subyacente, recibirá un error que indica que el proyecto no contiene una definición del controlador de eventos.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Errores en tiempo de ejecución

Los errores en tiempo de ejecución se producen cuando la aplicación se genera pero se comporta de forma inesperada al ejecutarla (al presionar F5 en Expression Blend). Los errores en tiempo de ejecución son los más difíciles de identificar porque suelen ser errores lógicos. En ocasiones, se pueden solucionar intentando realizar distintos cambios en el código o en XAML para llegar a entender lo que sucede en segundo plano. No obstante, es más rápido observar qué está pasando en segundo plano examinando el código línea por línea mientras se ejecuta la aplicación. Para obtener más información, vea la sección Depurar en Visual Studio 2008 más adelante en este tema.

Entre las causas comunes de errores en tiempo de ejecución, figuran las siguientes:

  • El diseño de los elementos XAML no es correcto o se ha usado un elemento de panel incorrecto para contener otros elementos. Para obtener más información acerca del diseño, vea la sección sobre el sistema de diseño en este manual del usuario o vea el artículo sobre el sistema de diseño y el artículo de información general sobre alineación, márgenes y relleno en la sección de WPF en MSDN.

  • Un elemento XAML no está enlazado al controlador de eventos correcto. Esto puede suceder si crea muchos métodos de control de eventos y asigna uno incorrecto al elemento XAML. Para ver los controladores de eventos que están asignados a un elemento XAML en un proyecto de WPF abierto en Expression Blend, seleccione el elemento en Objetos y escala de tiempo en el panel Interacción y, a continuación, haga clic en el botón Eventos del panel Propiedades. Para obtener más información, vea Control de eventos e interactividad del usuario en este manual del usuario. En un Silverlight 1.0, esto puede suceder si enlaza un controlador de eventos al elemento raíz mediante el siguiente código:

    rootElement.addEventListener(…);
    

    En lugar de enlazar el controlador de eventos a un elemento secundario en el documento, como mediante el siguiente código:

    this.control.content.findName("WebLink").addEventListener(…);
    

    Para obtener más información, vea Crear un botón que controle un guión gráfico en una aplicación de Silverlight.

  • Un desencadenador de animación no está configurado correctamente en Expression Blend. Por ejemplo, los guiones gráficos de animación deben iniciarse en cualquier desencadenador para poder detenerlos o pausarlos una vez cargada la aplicación. (Todos los guiones gráficos de animación se inician en el desencadenador Window.Loaded de forma predeterminada, aunque se puede modificar). Para obtener más información, vea Animación en este manual del usuario. Para obtener un ejemplo de desencadenadores de animación, vea Crear una animación sencilla o vea los temas de la sección Inténtelo en Estilos simples.

  • En un archivo de código, una variable hace referencia a un objeto que no existe todavía. Por ejemplo, en un archivo de código subyacente en un proyecto WPF, no se puede hacer referencia a un objeto XAML antes de la línea this.InitializeComponent(), ya que se obtendría un error XamlParseException.

  • En un archivo de código, se realizan suposiciones que hacen que la aplicación se ejecute por un código inesperado. En esta situación, lo más adecuado es examinar el código mientras realiza la depuración de la aplicación en Visual Studio 2008. Para obtener más información, vea Depurar aplicaciones de Expression Blend en Visual Studio 2008 en este manual del usuario.

  • En un archivo de código subyacente, las actualizaciones de la interfaz de usuario (UI) se ejecutan en el mismo subproceso que otra lógica de programación, cuando deberían ejecutarse en subprocesos separados. Por ejemplo, si crea un método de control de eventos que actualiza el texto que se muestra en una etiqueta, realiza otros cálculos y, a continuación, vuelve a actualizar el texto de la misma etiqueta antes de que se complete el método de control de eventos, sólo verá la última actualización. Esto ocurre porque la representación de la UI se produce al final del método de control de eventos y todo el procesamiento se realiza en el mismo subproceso, por lo que la aplicación no puede dedicar tiempo durante la ejecución del método para actualizar la UI. Para obtener información acerca de cómo escribir aplicaciones WPF que tienen varios cálculos y actualizaciones de la interfaz de usuario, vea el artículo sobre modelo de subprocesos en la sección de WPF de MSDN.

  • En un método de control de eventos de un archivo de código subyacente, se hace referencia a los elementos de la UI o a sus propiedades antes de que se encuentren disponibles. Por ejemplo, en el método de constructor Window1() de un proyecto WPF, aún no podrá tener acceso a los elementos de la UI. En un método de control de eventos OnInitialized(), puede tener acceso a los elementos de la UI, pero no puede examinar propiedades como ActualWidth (ancho real) porque aún no se ha implementado el diseño de los elementos de la UI. En un método de control de eventos OnLoaded(), puede hacer lo que desee con los elementos de la UI que existen en el documento XAML. Para obtener más información, vea el artículo sobre eventos de duración de objetos en la sección de WPF de MSDN. Para ver una lista de eventos y cuándo se producen, vea Referencia rápida de eventos de WPF en este manual del usuario.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

-

Depurar en Visual Studio 2008

Expression Blend es una herramienta de diseño para crear interfaces de usuario avanzadas para aplicaciones basadas en WPF y aplicaciones Silverlight 1.0. Puede usar Visual Studio 2008 para abrir, generar y depurar proyectos Expression Blend. Si tiene problemas para depurar aplicaciones con la función Probar (F5) de Expression Blend, puede usar Visual Studio 2008 para obtener mensajes de error detallados sobre los errores en tiempo de ejecución. Para obtener más información, vea Depurar aplicaciones de Expression Blend en Visual Studio 2008 en este manual del usuario.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Depurar problemas de rendimiento

WPF ofrece un conjunto de herramientas de evaluación del rendimiento que le permiten analizar el comportamiento en tiempo de ejecución de la aplicación y determinar cómo puede mejorar el rendimiento. Para obtener más información, vea el artículo sobre herramientas de generación de perfiles de rendimiento de WPF y el artículo sobre optimización de WPF: rendimiento de aplicaciones en la sección de WPF de MSDN.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Seguimiento de eventos

Los programadores de .NET experimentados pueden agregar código a sus aplicaciones WPF para desencadenar eventos de depuración personalizados que les ayudan a depurar errores más complicados. Esta característica se denomina Seguimiento de eventos para Windows (ETW). La herramienta de creación de perfiles de seguimiento de eventos de WPF usa ETW para el registro de eventos. Para obtener más información, vea el tema sobre el seguimiento de eventos y la clase PresentationTraceSources en el artículo sobre herramientas de generación de perfiles de rendimiento de WPF en MSDN.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Depurar aplicaciones híbridas

Si tiene una aplicación que usa WPF además de otra tecnología, como la programación de Windows Forms, podría experimentar problemas tales como comportamientos inesperados de superposición, comportamientos de escalado, problemas de control del enfoque, etc. Para obtener más información, vea el artículo sobre solución de problemas de aplicaciones híbridas en la sección de WPF de MSDN.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Seguridad

Mientras se está depurando, la aplicación tiene los mismos permisos de seguridad que cuando la usa otra persona. Para obtener más información, vea Implementar y publicar aplicaciones de Expression Blend en este manual del usuario. Para obtener más información, vea el artículo sobre seguridad en la sección de WPF de MSDN.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio

Obtener ayuda

Si necesita más ayuda para depurar la aplicación Expression Blend, puede buscar mensajes sobre su problema o publicar una pregunta en el foro de Windows Presentation Foundation (puede estar en inglés).

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(es-es,Expression.10).gifVolver al principio