127.0.0.1: Hogar dulce hogar
Mostrando entradas con la etiqueta vs2010. Mostrar todas las entradas
Mostrando entradas con la etiqueta vs2010. Mostrar todas las entradas

domingo, 13 de marzo de 2011

[WP7] An update to Visual Studio is required to open Silverlight for Windows Phone

 

Este error me ha surgido al abrir mis antiguos proyectos para Windows Phone 7, incluso después de instalar todas las últimas actualizaciones de las Windows Phone Tools y reiniciar contínuamente. ¿La solución? Pues la encontré en el foro de desarrolladores.

Lo único que hay que hacer es volver a enlazar la dll de Design.Platform de nuevo a Visual Studio, para ello:

  1. Abrir la consola de comandos en modo administrador
  2. Ir hasta c:\ProgramFiles\Microsoft SDKs\Windows\v7.0A\bin\NETFX4.0. Si estás con Windows de 64 bits, entonces tienes que ir hasta ProgramFiles(x86).
  3. Ejecutar el siguiente comando: - gacutil /i "%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.Windows.Design.Platform.dll" /f. Del mismo modo que antes, si estamos con 64 bits debemos especificar la carpeta ProgramFiles(x86)
  4. Verificar que al ejecutar el comando, pone: "Assembly successfully added to the cache”.

Aquí dejo una captura de pantalla:

image

martes, 3 de agosto de 2010

[VS2010] IntelliTrace ( II )

IntellITrace también ofrece un soporte avanzado para aquellas situaciones en las que todo desarrollador sufre alguna vez en la vida. Supongamos el siguiente escenario, donde nuestra aplicación produce un fallo que no ha sido detectado y procedemos a debuggear el código…pero no logramos localizar el fallo. En ese caso podemos emplear la característica de IntelliTrace de guardar una captura de debug. Para ello lo primero que debemos hacer es indicarle que deseamos guardar la traza:

image

Una vez hecho esto, prestemos especial atención a la casilla de Team Foundation Server. Esto permitirá que Team Foundation Server (TFS) recoja mediante el TestManager las capturas de debug y las envíe a los tester mientras el desarrollo continúa. En estas capturas no es sólo un volcado común de pila, sino es un conjunto de estados en los que la aplicación ha ido alterando a lo largo del tiempo. De este modo podremos ver los eventos y llamadas en cualquier momento anterior al presente, como se expuso en el primer artículo.

El siguiente paso es abrir el fichero .itrace. Al abrirlo, podemos apreciar una captura como la que sigue a continuación del siguiente párrafo:

image

Podemos expandir los campos para ver la información de hilos, excepciones, módulos y datos de testing. Al hacer clic sobre un hilo se cargan todos los eventos ocurridos y si por ejemplo, hacemos clic en cualquier elemento (como una excepción) automáticamente nos llevará al estado en el que se produjo, y ya podremos navegar por IntelliTrace al igual que se mostró en el primer artículo.

Por último resalto la posibilidad de aplicar extensiones a IntelliTrace. A través de MSDN obtenemos toda la información necesaria del API para analizar la recolección de datos y aquí podemos obtener algunos ejemplos prácticos.

[VS2010] IntelliTrace ( I )

Mientras voy trabajando con Visual Studio 2010 voy usando algunas de las nuevas mejoras, entre ellas IntelliTrace. Esta herramienta sólo está disponible con Visual Studio 2010 Ultimate, es decir que ni la versión Express ni la Professional la incluyen.

Generalmente al desarrollar cualquier software se emplea cientos de veces el debugger del IDE para averiguar qué ha ocurrido para que el software tenga un comportamiento anómalo o distinto de lo diseñado. En este caso el sistema es simple: introducimos breakpoints en el código y a través del análisis de las variables locales y de la pila de llamadas vamos analizando la secuencia del flujo de programa e investigando a través de los valores locales qué es lo que ha podido ocurrir. Sin embargo, muchas veces hemos perdido el tiempo colocando el breakpoint en el lugar adecuado. En determinadas ocasiones queremos ver por qué hemos llegado a determinado punto, y eso obliga  a que si ese punto en concreto no lo hemos marcado como breakpoint no podemos retornar a él salvo que cancelemos la ejecución actual, marquemos ese punto como breakpoint y volvamos a ejecutar para ver qué ha podido ocurrir. En una aplicación pequeña no supone mucho esfuerzo salvo por la incomodidad de tener que terminar la depuración y volver a compilar/ejecutar, pero si la aplicación es grande y consume bastantes recursos, nos conviene optimizar dicho tiempo para evitar perderlo. Resumiendo, podemos debuggear sólo en el punto donde tenemos puesto el breakpoint y seguir la secuencia de eventos.

Es a partir del punto anterior donde nace la principal ventaja de IntelliTrace: podemos retroceder al “pasado” y ver todos los eventos que ocurren únicamente dentro de ese contexto para poder observar realmente lo que pasa dentro de él. De este modo, podemos evitar los incómodos rearranques con nuevo ajuste de breakpoint para averiguar lo que ocurre dentro de ese contexto.

 

image

La imagen superior es la ventana de IntelliTrace. Aparece en cuanto comenzamos a depurar la aplicación, mediante un breakpoint y está junto al explorador de soluciones. En un primer vistazo a la ventana apreciamos dos estados: el inicio de la aplicación y el estado actual, donde reside el breakpoint. Podemos configurarlo de modo que sólo trabaje con determinadas categorías (ADO,ASP, Registro, Ficheros, etc) y también especificar en qué hilos queremos que IntelliTrace analice la depuración.

Si hacemos clic en cualquiera de los pasos de la imagen anterior, podemos analizar el estado de las variables en ese paso y el estado de la pila de llamadas:

image

Además podemos personalizar cómo queremos que realice la exploración. Por ejemplo, podemos indicarle que además de analizar todo lo que hemos visto hasta ahora, que analice también la secuencia de llamadas, que es el modo “avanzado” de analizar que dispone. Para ello bien podemos ir al icono de configuración de IntelliTrace o a través de opciones de Visual Studio 2010:

image

Dándole un vistazo por las opciones de configuración de IntelliTrace, podemos seleccionar qué módulos queremos que sean analizados, el tamaño del fichero donde se almacena el análisis y qué eventos queremos incluir en el análisis. En la sección General de la configuración de IntelliTrace, seleccionando eventos e informaciones de llamada, podemos obtener más datos de depuración. Como ventaja es que se almacena cada llamada, salida y valor de parámetros. En el caso de que un parámetro sea un array, sólo almacena las 256 primeras posiciones. Y en el caso de que sea un objeto, sólo almacena la información más relevante.

image

miércoles, 28 de julio de 2010

[VS2010] Call Hierarchy

En estos días estoy actualizándome un poco y pasando a Visual Studio 2010. De todas las novedades que incluye además del apartado visual hay dos que me han llamado la atención, siendo una de ellas la herramienta Call Hiearchy.

Esta herramienta nos proporciona como su propio nombre indica la secuencia de llamadas de una propiedad o método de una clase. Veamos un ejemplo:

Vamos a analizar qué llamadas se realizan al método AbreConexión y qué llamadas se realizan desde dicho método hacia otros objetos. Para ello, abrimos la clase Conexion y nos situamos sobre el método que queremos analizar. Pulsamos el botón derecho sobre su nombre de modo que nos aparezca el siguiente menú contextual:

image

Nos desplazamos hacia la opción de View Call Hiearchy y se abrirá la siguiente ventana:

image

Como se aprecia está distribuida en dos zonas. En primer lugar a la izquierda aparecen las llamadas y a la derecha las secciones de código dentro de cada método seleccionado a la izquierda donde aparece la referencia a nuestro método/propiedad a analizar. Si hacemos doble clic sobre cualquier elemento, nos llevará automáticamente al código referenciado y si hacemos clic con el botón derecho, aparece lo siguiente:

image

Con Go To Definition se aplica lo que mencioné en el anterior párrafo. Con Find All References el IDE busca todas las referencias a ese método/propiedad. Si por el contrario seleccionamos Add as New Root podremos añadir a la lista de jerarquías dicho método/propiedad a analizar. En la imagen de ejemplo, he decidido analizar las llamadas en las que interactúa el método AltaEquipo y como se parecia, aparece como una nueva raíz.

Por último, sólo me falta resaltar que es una novedad muy interesante, ya que para aquellas situaciones en las que se deba realizar un análisis del código o de una determinada función, permitirá ayudar bastante y tener todo de un modo más ordenado.