SlideShare uma empresa Scribd logo
1 de 49
Depuración de aplicaciones
.Net en Visual Studio
Debugging Tactics
Contenidos
• Contexto de depuración en Visual Studio.
• Ciclo de desarrollo
• Introducción Windows y .Net.
• ¿Qué es .net?
• Correspondencia entre .net y Visual Studio.
• El IDE de visual studio.
• Configuración de Depuración en Visual Studio
• Herramientas de depuración Visual Studio.
• Como depurar en Visual Studio.
Ciclo de desarrollo
De bugging is twice as hard as writing the code in the first
place.Therefore if you write the code as cleacerly as possible, you are
by definition, not Smart enough to debug it.
Brian Kernighan
Depurar código tiene como objetivo encontrar las causas de un
problema.
El uso de técnicas de TDD incrementa el tiempo de desarrollo por 2
pero reduce el tiempo de debugging. (es cuestión de elegir como
queremos que sea nuestro ciclo de desarrollo)
Introduccion Windows y .net
• En el entorno de Microsoft
disponemos de 2 entornos de
depuración.
• Windows debugging.
• Orientado al debugging de
Aplicaciones nativas win32 y com
principalmente drivers de
dispositivos, productos office. VS. etc
• Visual Studio Debugging.
• Orientado principalmente al
debugging de aplicaciones
administradas .net
Windows
S.O.
Win32.
Aplicaciones nativas.
Desarrollo de drivers y
aplicaciones
fuertemente
acopladas al sistema
operativo.
Ejemplo: aplicaciones
office y el propio
Visual Studio.
.Net
Plataforma de
desarrollo
CLR + BCL
Apl. administradas
Entorno de desarrollo
oop tanto local como
distribuido.
Facilitar el despligue
de aplicaciones.
Integración
Ejemplo: ERP. Juegos.
Etc.
Que es .net?
Las principales ventajas de hacer debugging en Visual Studio provienen realmente de
estar utilizando .net.
• Plataforma de Desarrollo compuesta de
• Entorno de Ejecución (Runtime)
• Bibliotecas de Funcionalidad (Class Library)
• Lenguajes de Programación
• Compiladores
• Herramientas de Desarrollo (IDE & Tools)
• Guías de Arquitectura
• La evolución de la plataforma COM
¿Qué no es?
• .NET no es un Sistema Operativo
• .NET no es un Lenguaje de Programación
• .NET no es un Entorno de Desarrollo
• .NET no es un Servidor de Aplicaciones
• .NET no es un producto empaquetado que se pueda comprar como tal
Visual studio correspondencia .net
IDE integrated development enviroment.
An integrated development environment (IDE) or interactive
development environment is a software application that provides
comprehensive facilities to computer programmers for software
development. An IDE normally consists of a source code editor, build
automation tools and a debugger. Most modern IDEs have intelligent
code completion.
• Source:
http://en.wikipedia.org/wiki/Integrated_development_environment
Contenidos
• Contexto de depuración.
• Configuración de depuración.
• Herramientas del entorno de desarrollo.
• Soluciones y proyectos
• Problemas de carga de proyectos
• Propiedades de la solución.
• Propiedades del proyecto.
• Propiedades del proyecto: Aplicación.
• Propiedades del proyecto: Depuración.
• Propiedades de proyectos y soluciones.
• El IDE de visual studio.
• Herramientas de depuración de visual studio.
Herramientas del entorno de desarrollo
Sugerencias para el entorno de desarrollo de 2010.
IDE
• Microsoft Visual Studio 2010, ediciones Premium o Ultimate.
• Microsoft Visual Studio 2010 Service Pack 1.
SDK.
• Windows x.y SDK
• Visual studio SDK, SDK sp1
Extensiones de la galería de visual studio.
• Stylecop
• FXCop
• PowerCommands for Visual Studio 2010
• Productivity power tools for visual studio
• Team founsdation server power tools
• Vsix explorer
• Nuget.
• GIT.
• Otras sugerencias:
• http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio
• http://geekswithblogs.net/sdorman/archive/2014/10/05/favorite-visual-studio-extensions.aspx
Configuración de opciones VS
• Si tenemos 2 instancias abiertas de visual studio y modificamos la
configuración de una de ellas es posible que la segunda no se
actualize. Por lo que esta operativa solo se debería llevar a cabo con
una única instancia de VS. En caso de que si se actualice puede ser
debido a que el Registro haya almacenado la misma clave para ambas
instancias lo que además es un comportamiento indeseable.
Soluciones y proyectos
• Soluciones y proyectos son los contenedores que permiten administra
los elementos necesarios para la construcción de aplicaciones. Estos
elementos son: Referencias (Dlls con las enlazar), Metadatos,
Configuraciones de compilación, carpetas, archivos, etc.
• Las soluciones se definen en dos archivos los .sln y los .slu (metadatos
y opciones del usuario de V.S. como la inclusión de nuevos elementos
en la toolbox)
• Los proyectos permiten administrar de forma lógica sus
componentes, compilarlos y depurarlos.
Problemas de carga de proyectos
• Visual studio proporciona diversas plantillas de proyecto así como de solución o de elemento. Algunas de estas plantillas
de proyecto se instalan de forma opcional con SDKs específicos u otro tipo de extensiones como puede ser los proyectos
de MVC. En algunos casos esto significa que si no tienes instalado la tecnología adecuada no podrás cargar el proyecto
que la usa indicándote el Visual Studio que no ha sido capaz de cargar dicho proyecto marcándolo como “no disponible”.
• Para averiguar que tecnología, extensión o sdk debemos instalar podemos editar el fichero “.csproj” aprovechando que
el mismo esta descargado.
• Al editarlo comprobamos que dicho fichero que solo es accesible si “descargamos” el proyecto es en realidad un fichero
xml con el configuramos las características comportamiento del proyecto.
• Localizamos entonces el Global id del proyecto con el atributo xml <ProjectTypeGuids>
• Que nos proporciona un lista de globals Id asignados a los tipos de proyecto que intervienen en dicho proyecto.
• Después podemos consultar este en http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-
GUIDs o en http://www.mztools.com/articles/2008/mz2008017.aspx
• Y averiguar así que tecnología debemos incluir para poder cargar el proyecto.
• Importante muchas extensiones es conveniente instalarlas con el visual studio cerrado o en caso contrario nos obligara a
reiniciarlo para poder hacer uso de las nuevas características incorporadas.
Propiedades de la solución
Acceso
1. En el Explorador de soluciones, seleccione una
solución.
2. Elija Páginas de propiedades en el menú Ver (view) o
sacar el menú contextual en el ítem de propiedades
de la solución del explorador de soluciones.
Nos aparece un cuadro de dialogo con Las propiedades
comunes a los proyectos y las propiedades de cada una
de las configuraciones, Debug, Release etc. En la sección
“Propiedades de configuración”. Para poder cambiar estas
propiedades debemos ir al configuration manager con el
botón o con el menú de “Build” la opción de configuration
manager. Aquí podemos establecer para cada
configuración de compilación/Construcción cual es la
plataforma para la que queremos compilar. De esta
manera podemos hacer debuging en una plataforma
hacer reléase en otra etc. También podemos incluir o no
código con las directivas de compilación condicional. Y el
orden en que queremos que se realice la compilación.
Configuration Manager
Por norma general es conveniente que en un
producto a entregar todas las compilaciones
coincidan en la plataforma que se desea entregar.
Por defecto nos aparecerá x86 pero si deseamos
contar con las ventajas de otras plataformas con x64
o itanium tenemos que añadirlas. Solo es necesario
tener en cuenta que solo podemos añadirlas una
única vez para todos los proyectos de la solución pero
luego tenemos que seleccionarlas para cada
proyecto. De esta forma podemos crear una serie de
productos con diversas “releases” cada una de ellas
orientadas a diferentes plataformas.
NOTA: para compilar simultáneamente varias
configuraciones podemos utilizar la compilación por
lotes o batch compiling.
Propiedades del Proyecto: project designer
Para acceder a las propiedades del proyecto basta con hacer doble click
en la carpeta de propiedades o seleccionar con el menú contextual en
el explorador de soluciones o en el menú de proyecto la opción
“Propiedades”
Aparecera el dialogo de “Propiedades del proyecto”. Con diversas
opciones en las Pestañas de la izquierda.
Las pestañas que ahora nos interesan son:
Aplicación, Compilar y Debug
Para cualquier duda sobre el significado de estas pestañas solo es
necesario pulsar al tecla f1 para sacar la ayuda correspondiente.
NOTA: El dialogo de propiedades del proyecto también se conoce como
Project Designer.
Propiedades del Proyecto: Aplicación.
• Entre las propiedades que nos interesan tenemos.
• El target framework que en vs2010 nos aparece por defecto el
framework 4 cliente profile. El cual es un subconjunto de .net
redistribuible el cual renuncia a algunas características de .net como
son: ASP.NET, funcionalidad avanzada de Windows Communication
Foundation (WCF) .NET Framework Data Provider para Oracle y la
compilación por MSBuild.
• Igualmente el output type nos resultara de interés sobre todo para
organizar la depuración de servicios Windows. Los cuales se
establecen como Windows application pero que cambiaremos a
Console application para facilitar su debuggin como veremos mas
adelante.
Propiedades de build event
• Aquí podemos invocar aplicaciones o copiar resultados desde una
carpeta a otra para facilitar el posterior despliegue de aplicaciones.
• Por ejemplo los proyectos con prism pueden copiar de la carpeta de
ensamblados a la carpeta de búsqueda de los módulos del proyecto.
• O los proyectos de WCF pueden invocar a la utilidad de svcutil para
generar los clientes.
• Estas invocaciones se pueden llevar a cabo en función del resultado
de la compilación.
Propiedades de compilación.
• Elegimos la configuración de debugging y la plataforma sobre la que
haremos el debug. (Gestionamos las configuraciones pero no establecemos
cual es la configuración activa)
• Separados por comas podemos establecer los símbolos de compilación
condicional para la configuración que hemos seleccionado previamente.
• Establecemos el warning level y aquellos códigos de warning de los que no
queremos ser notificados.
• Para facilitar el debug es mejor NO activar la optimización de código.
• Para asegurar la coherencia de todos los ensamblados es mejor dirigir el
camino de salida output path a una misma carpeta para todos los
ensamblados que no correspondan a proyectos de aplicaciones web. Los
cuales se dejaran en la carpeta por defecto bindebug o
bin%configuración%
• En el dialogo de “Avanzado” comprobar que para la configuración de debug
la opción debug info es “full”.
Ficheros PDB
Fuente : http://mariangemarcano.blogspot.com.es/2011/11/visual-studio-debugging-and-remote.html
La configuración “Debug” genera información de símbolos completa de símbolos sin optimización.
La configuración “Reléase” optimiza el código y genera solo los ficheros PDB pero no incluye el atributo
“Debuggable” Por lo que el código fuente y los números de línea no serán visibles en una sesión de depuración
pero la existencia del PDB permitirá que esta información sea utilizada por el stacktrace.
La optimización por su parte es eliminada por que este proceso reordena las instrucciones para obtener un
código mas eficiente. Esta optimización se realiza en dos pasos cuando se obtiene el código msil y cuando se
compila siendo en su mayor parte realizada por el JIT.
Los ficheros PDB con el atributo de debuggable son los que permiten realizar la depuración en remoto para lo
cual ambas maquinas necesitan permisos de acceso mutuamente.
Otra característica interesante para hacer debugging de un ejecutable es crear un fichero con idéntico nombre
que el ejecutable y tipo .ini con el siguiente código.
[.Net Framework Debugging Control]
GenerateTrackingInfo=1
AlloOptimized=0
Propiedades de Proyecto: Depurar
• Podemos establecer como ejecutamos el proyecto O si necesita ser
ejecutado por otro proyecto de la solución. (módulos de prism)
• Podemos establecer los argumentos que pasaríamos si estuviéramos
invocando la aplicación desde una consola.
• Podemos establecer si la ejecución se realiza en otra maquina o directorio.
• Establecemos si la ejecución de este proyecto va a usarse el host de visual
studio. Recordar que cuando ejecutamos .net el compilador genera MSIL y
el CLR nos proporciona un host de ejecución que nos proporciona un
dominio de aplicación (una forma de aislamiento preventivo entre
aplicaciones ) cuando no permitimos o no podemos utilizar el host de
visual studio estaremos renunciando a un gran numero de capacidades de
debugging como suele ser cuando seleccionamos la opción de reléase.
Configuración de depuración remota
1. Compartimos la carpeta para la maquina remota o instalamos
c:Program Files(x86)  Microsoft visual Studio 10.0 IDE remote
Debugger
2. Se copian las tres carpetas pues en SO de 64 bits
3. También se puede instalar con el instalador de remote debugger
que se encuentra en el disco de instalación de visual studio.
Rdbgsetup_xXX.exe que lo instalara como un servicio.
4. Se ejecuta msvsmon.exe
Contenidos
• Contexto de depuración en Visual Studio.
• Configuración de Depuración en Visual Studio
• Herramientas de depuración Visual Studio.
• Como depurar en Visual Studio.
Ventana: Jerarquía de llamadas
La jerarquía de llamadas permite navegar por
el código mostrando todas las llamadas a y
desde un método, propiedad, o un constructor
seleccionados. Esto permite entender mejor
cómo fluye el código y evaluar los efectos de
los cambios que se realizan en el código.
Puede examinar varios niveles de código para
ver cadenas complejas de llamadas a métodos
y puntos de entrada adicionales al código, lo
que le permite explorar todas las posibles
rutas de ejecución.
Sin embargo Jerarquía de llamadas no
encuentra las referencias del grupo de
métodos, que contiene ubicaciones en las que
un método se agrega como controlador de
eventos o se asigna a un delegado. Para buscar
todas las referencias a un método, puede usar
el comando Buscar todas las referencias.
También se puede ejecutar el menú
contextual sobre los nodos de la jerarquía de
llamadas. por ejemplo ir a la definición (f12)
que navegara hasta el código o el PDB
correspondiente.
Jerarquía de llamadas está disponible en
tiempo de diseño, a diferencia de la pila de
llamadas que muestra el depurador.
Elegir elementos de la caja de herramientas
• Este dialogo nos permite elegir las opciones de nuestro toolbox para
algunos de los principales namespaces en uso.
• Se usa fundamentalmente para configurar los componentes que
queremos para WPF.
Menú herramientas, opción elegir elementos de la caja de
herramientas
Insertar código snipets o envolver codigo
• Insertar snipet ctrol-k,x (insert with..)
• Envolver snipet ctrol-k,s (surround with)
• https://vssnippets.codeplex.com/ en esta url existe una lista de snippets consistentes con las
reglas de stylecop para instalarlos solo es necesario REEMPLAZARLOS en una de estas dos
carpetas en función de la arquitectura.
• C:Program Files (x86)Microsoft Visual Studio 10.0VC#Snippets1033Visual C#
ó
C:Program FilesMicrosoft Visual Studio 10.0VC#Snippets1033Visual C#
Ventana de comandos
Acceso : menú ver /view seleccione “otras ventanas” seleccione “ventana comando”
La ventana de comando se usa para ejecutar comandos, comandos que aparecen en el propio menú del IDE y
otros que no aparecen.
Los mas usados son “of” para open file. Que nos proporciona una búsqueda incremental de los ficheros de la
solución a medida que vamos escribiendo.
“g” para debug.start que inicia una sesión de debugging.
“?” Para debug.print de una expresión o valor.
“??” Para un quick watch
“Bl” breakpoint window.
“Help” Para la ayuda de la propia ventana.
“Eval” para Debug.evaluateStament
“Q” stop debugging
Para una completa lista de los comandos disponibles consultar.
https://msdn.microsoft.com/es-es/library/c338aexd.aspx
Y
https://msdn.microsoft.com/es-es/library/c3a0kd3x.aspx
Tareas, errores y miscelánea
• Ventana “Lista de errores”. No hace falta comentar.
• “Ctrl-G” goto line usar en combinación con el comando of (fichero)
• Lista de tareas: por comentario Los tokens son(TODO, HACK ). Para crear
nuevos tokens Opciones/Enviroment o contexto/ Lista de tareas, tienes un
dialogo para añadir nuevos tokens. (IMPORTANTE PARA GESTIONAR
NUESTRA DEUDA TÉCNICA)
Opciones: de proyectos:
• marcar la opción de realizar seguimiento de elemento activo.
• Guardar proyectos al crearlos. (elegir)
Modificadores denenv Consultar :
https://msdn.microsoft.com/es-es/library/xee0c8y7(v=vs.100).aspx
Ventana de inmediato
Esta ventana nos permite realizar depuración en tiempo de diseño sin necesidad de ejecutar el
programa.
• La ventana de inmediato nos permite evaluar expresiones tanto en modo diseño como en modo
debug. Ver ejemplo de código.
• Esta ventana resulta particularmente útil por ejemplo cuando una sentencia return realiza el
calculo de lo que devuelve. Por norma general el colocar el cursor encima no nos permite saber
cual es el resultado final pero con esta ventana podemos copiar el la expresión y ejecutarla para
saber el resultado.
• El alias de comando “?” corresponde a “Debug.Print (expresión)”
• En tiempo de diseño podemos ejecutar métodos definidos en nuestro código. Si este tiene un
punto de interrupción saltara el debugger en dicho punto.
• Importante el signo igual “=” en esta ventana se interpreta como un operador de comparación.
No es posible realizar asignaciones en la ventana de comando.
• Es posible ejecutar un comando de la ventana decomando dentro de la ventana de inmediato
precediéndolo de el signo “mayor que” “>”
• El modo marcar permite usar una instrucción anterior.
• Esta ventana permite trabajar también con la memoria y los registros. (fuera del alcance en este
curso)
Ventana: Autos
• Solo disponible en modo depuración con el programa en break mode.
• Nos proporciona los nombres de las variables el tipo y el valor.
• Guarda los valores en las instrucciones anteriores y posteriores.
• Nos permite cambiar el valor de dichas variables.
• Nos permite ver el valor devuelto por un método
Información de Carga de módulos
• Solo disponible en modo debug.
• Nos proporciona un listado de los asembblies que hemos cargado, el
path del mismo, el path de su fichero de PDB y el thread en el que se
están ejecutando.
Contenidos
• Contexto de depuración en Visual Studio.
• Configuración de Depuración en Visual Studio
• Herramientas de depuración Visual Studio.
• Como depurar en Visual Studio.
Iniciar/parar la ejecución en modo depurado.
F5 – Depurar –Debug
F11 – paso a paso por instrucciones - step over. Inicia la ejecución y se
para en la primera instrucción del programa.
Estas opciones también están en el menú contextual de los ficheros de
proyectos pero permiten ser ejecutadas contra un proyecto no
marcado como “startup Project”
Ctrl-f10 - Ejecutar hasta el cursor- igualmente opción de menú
contextual en el código fuente.
Stop. Finaliza el proceso de debugging
Break all pausa el hilo de ejecución donde este se encuentre y mostrara
el código fuente de donde se ha parado.
Set next stament
• Si te has pasado de sentencia en la
ejecución paso a paso esta opción te
permite hacer marcha atrás.
• Advertencia el uso de esta opción puede
resultar peligrosa si el stack o los
registros se ha corrompido.
Conectarse a procesos en ejecución
Se lleva a cabo con el attach process
• Depurar una aplicación no creada con viaul studio.
• Depurar un proceso en un equipo remoto
• Iniciar automáticamente el depurador de visual studio cuando un
proceso se bloquee mientras se ejecuta fuera de visual studio. Esto es
la depuración just in time.
• Se recomienda usar el VS en modo administrador para ver todos los
procesos.
Ver ejemplo en vs.
Permisos en depuración remota
Depuración Administrada
En la depuración remota con visual studio. Este
se convierte en un cliente de la maquina donde
se ejecuta el proceso para ello es necesario
instalar o ejecutar los servicios que hemos
descrito anteriormente que actúan como
servidor. La comunicación entre amsbo es
bidireccional y por tanto los permisos tienen
que tener en cuenta ambas direcciones lo mas
sencillo será que las cuentas locales de
administrador tengan permisos entre ambas
maquinas y los puertos de tcp y udp estén
abiertos.
Los problemas de permisos son el principal
escollo para realizar la depuración remota.
Pero tener estos permisos abiertos hace al
sistema de seguridad vulnerable (sobre todo en
la modalidad sin autenticación)por lo que se
recomienda que dichos permisos sean
temporales.
Especificar una versión de .net
El depurador de Visual Studio 2010 puede depurar versiones anteriores de Microsoft .NET Framework así como la versión actual. Si inicia una aplicación desde Visual Studio, el depurador siempre puede
identificar la versión correcta de .NET Framework para la aplicación que se está depurando. Si la aplicación ya se está ejecutando y se utiliza Adjuntar a, es posible que el depurador no siempre identifique
una versión anterior de .NET Framework. Si esto ocurre, aparecerá el mensaje de error:
• El depurador ha deducido de manera equivocada la versión de .NET Framework que va a utilizar la aplicación.
• En estos raros casos, puede establecer una clave del Registro para indicar al depurador qué versión utilizar.
• Para especificar una versión de .NET Framework para la depuración
1. Examine el directorio WindowsMicrosoft.NETFramework para encontrar las versiones de .NET Framework instaladas en su equipo. Los números de versión tienen un aspecto similar al siguiente:
2. V1.1.4322
3. Identifique el número de versión correcto y anótelo.
4. Inicie el Editor del Registro (regedit).
5. En el Editor del Registro, abra la carpeta HKEY_LOCAL_MACHINE.
6. Navegue a: HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine{449EC4CC-30D2-4032-9256-EE18EB41B62B}
7. Si la clave no existe, haga clic con el botón secundario en HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine y haga clic en Nueva clave. Asigne el nombre {449EC4CC-
30D2-4032-9256-EE18EB41B62B } a la nueva clave.
8. Después de navegar a {449EC4CC-30D2-4032-9256-EE18EB41B62B }, examine la columna Nombre y encuentre la clave CLRVersionForDebugging.
1. Si la clave no existe, haga clic con el botón secundario del mouse en {449EC4CC-30D2-4032-9256-EE18EB41B62B} y haga clic en Nuevo valor de cadena. A continuación, haga clic con el botón secundario en el
nuevo valor de cadena, haga clic en Cambiar nombre y escribaCLRVersionForDebugging.
9. Haga doble clic en CLRVersionForDebugging.
10. En el cuadro Editar cadena, escriba el número de versión de .NET Framework en el cuadro Valor. Por ejemplo: V1.1.4322
11. Haga clic en Aceptar.
12. Cierre el Editor del Registro.
13. Si todavía obtiene un mensaje de error cuando empieza a depurar, compruebe que ha escrito correctamente el número de versión en el Registro.Compruebe también que está utilizando una versión
de .NET Framework admitida por Visual Studio. El depurador es compatible con la versión actual de .NET Framework y con las versiones anteriores, pero puede no serlo con versiones futuras.
Depuración de múltiples procesos
• Los procesos corresponden a las aplicaciones y se ejecutan dentro de un
dominio.
• Los hilos (Subprocesos) corren dentro de los procesos.
• Diferentes hilos y procesos pueden ser ejecutados de forma paralela.
• El procesamiento en paralelo suele necesitar de sincronización para
acceder a recursos. Cuando uno o más hilos esperan a un proceso que
jamás queda disponible es una condición conocida como “Dead Lock”
• La depuración se lleva cabo en el host que Visual Studio proporciona.
• Las aplicaciones de script no tienen un proceso. Sino que utilizan otro host
como DIIs , o el propio Visual Studio. (t4, dsl)
• Una aplicación .exe puede lanzar varios procesos. Para cambiar de un
proceso a otro utilizamos la barra de herramientas “Ubicación de
depuración” (debug location).
Herramientas de debuggin de hilos y procesos
Las ventanas del menú de depuración (La mayor parte de ellas son
accesibles cuando se esta ejecutando la depuración.)
• El attach to process. (menú debug y tools)
• La ventana de procesos.
• La ventana de hilos
• La ventana de Pila de llamadas Call Stack.
• La ventana de tareas paralelas Parallel tasks.
Ventana de pilas paralelas
Si consultamos la ventana de parallel stacks de una aplicación “hello Wordl”
observaremos que en modo que en modo reléase solo tenemos un único
hilo. Sin embargo en modo debug tenemos varios hilos mas que son los que
nos permiten hacer el debugging y que pertenecen al host de visual studio.
Depuración just in time
• Le depuración just in time hace que una aplicación invoque al
depurador en caso de que se produzca una excepción. Este
comportamiento se puede deshabilitar en las opciones del debugger
pero no evitara que el error salte.
Ver ejemplo en código.
Depuración de servicios Windows Instalando
La ejecución de un servicio se debe llevar a cabo en el contexto del
Administrador de control de servicios en vez de en Visual Studio. Por
tanto para depurarlo es necesario instalarlo y realizar un attach del
proceso correspondiente.
En este caso es necesario tener en cuenta que el método on-start del
servicios debe retornar antes de 30 seg. Pasado ese tiempo si no ha
retornado por un punto de interrupción el administrador de servicios
no lo iniciara.
Esto significa que el método on-start no se puede depurar si no se se
crea un segundo servicio temporal para cargar el proceso de servicio.
Inciso Windows Services introducción
Existen dos tipos de servicios Windows :
• Aquellos que solo ejecutan un servicio en un único proceso. Y cuyo tipo es Win32OwnProcess
• Aquellos que ejecutan varios servicios en un único proceso y cuyo tipo es Win32ShareProcess
Por esta razón la plantilla de Windows Services nos proporciona este código en el fichero
Program.cs
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
Depuración de Servicios Windows sin instalar
Opción de depuración de WS. Convertir el WS en aplicación de consola.
• Este método pasa por realizar una comprobación inicial del enviroment y varia la
forma de invocar el servicio según si esta instalado o no. Lo que permite permite
realizar una depuración dentro del Visual Studio. Para ello eliminamos el fichero
program.cs y pasamos el metod main a nuestra clase derivada de
System.Windows.Services
static void Main(string[] args)
{
if (Environment.UserInteractive)
{
var a = new WSNameService();
a.OnStart(args);
}
else
ServiceBase.Run(new WSNameService());
}
Best practices Windows Services
• Capturar las excepciones no gestionadas en el constructor del servicio
public WSNameService()
{
this.ServiceName = "WSNameService";
AppDomain.CurrentDomain.UnhandledException += new
UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var ex = (Exception)e.ExceptionObject;
try
{
logService.Fatal("Fallo fatal", ex);
}
catch (Exception ex2)
{
// en este caso estamos escribiendo en un log de texto en una carpeta temporal
File.WriteAllText(@"c:tempWSNameService" +
DateTime.Now.ToString("yyyyMMddhhmmss") +
".txt", ex.ToString() +
"rn" +
(ex.Source ?? ""));
}
finally
{
}
}
Intellitrace
Intellitrace realiza una grabación del historial de ejecución.
Registra eventos y/o llamadas a función.
Permite situarse en cualquier punto del historial y consultar el estado del
programa en dicho punto.
No es necesario reiniciar la depuración para recrear los errores o eventos.
Existen dos formas de usarlo, grabar todo y luego filtrar o grabar
exclusivamente los eventos en los que se sospecha que ocurre el problema.
Se recomienda mantener las ventanas de variables locales y automático
abiertas junto con la propia ventana de intellitrace.
A continuación cuando se pare la ejecución podrá consultarse cualquiera de
los eventos grabados y analizar su contexto.
Intellitrace
• Algunas llamadas pueden aparecer atenuadas para indicar que
pertenecen a un modulo del que no se graba.
• Cuando se esta revisando la información de eventos se puede reflejar
en la ventana de código la parte de fuente que corresponde con el
evento o la llamda en ese punto que esta marcado tenemos opciones
de navegación adicionales.
• Igualmente podemos buscar desde la ventana de código cuales son
las instancias de esa llamada en el histórico de Intellitrace.
• La sesión de intellitrace se puede salvar en disco y recuperar
posteriormente.
• EL archivo en que se guarda es un “*.itrace”
• Es conveniente activar la grabación solo cuando sea necesario.
Es posible utilizar intellitrace en sistemas desplegados con el Microsoft
Monitoring Agent y el recolector de datos de diagnostico de intellitrace.
Para ampliar información consultar
https://msdn.microsoft.com/es-es/library/dn449058.aspx
https://msdn.microsoft.com/es-es/library/hh398365.aspx
https://msdn.microsoft.com/es-es/library/dn798710.aspx
Gracias
• Javier Hermoso
• Freelance .net
• jhermoso@pretor.es
Algunas Fuentes
• Depurar en visual studio.
• https://msdn.microsoft.com/es-es/library/sc65sadd(v=vs.80).aspx
• http://www.codeproject.com/Reference/720512/List-of-Visual-
Studio-Project-Type-GUIDs
• http://www.mztools.com/articles/2008/mz2008017.aspx

Mais conteúdo relacionado

Mais procurados

¿Qué hacer para dominar el arte del levantamiento de requerimientos?
¿Qué hacer para dominar el arte del levantamiento de requerimientos?¿Qué hacer para dominar el arte del levantamiento de requerimientos?
¿Qué hacer para dominar el arte del levantamiento de requerimientos?Software Guru
 
36435062 analisis-de-riesgos
36435062 analisis-de-riesgos36435062 analisis-de-riesgos
36435062 analisis-de-riesgosEsterph
 
Ingeniería de requisitos(ir)
Ingeniería de requisitos(ir)Ingeniería de requisitos(ir)
Ingeniería de requisitos(ir)Kleo Jorgee
 
Necesidades vs requerimientos
Necesidades vs requerimientosNecesidades vs requerimientos
Necesidades vs requerimientosHooberth1
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitoskelyquinayas
 
ingenieria de requerimientos
ingenieria de requerimientos ingenieria de requerimientos
ingenieria de requerimientos Gabriel Garcia
 
Ing.requerimientos
Ing.requerimientosIng.requerimientos
Ing.requerimientosAlumic S.A
 
Introducción a la Ingeniería de Requerimientos
Introducción a la Ingeniería de RequerimientosIntroducción a la Ingeniería de Requerimientos
Introducción a la Ingeniería de Requerimientosjmpov441
 
2. requerimientos del software
2. requerimientos del software2. requerimientos del software
2. requerimientos del softwareuniv of pamplona
 
Ingeniería de requisitos-UDO MONAGAS
Ingeniería de requisitos-UDO MONAGASIngeniería de requisitos-UDO MONAGAS
Ingeniería de requisitos-UDO MONAGASfernandoUDO
 
TÉCNICAS QUE SE IMPLEMENTAN EN LA
TÉCNICAS QUE SE IMPLEMENTAN EN LA  TÉCNICAS QUE SE IMPLEMENTAN EN LA
TÉCNICAS QUE SE IMPLEMENTAN EN LA xinithazangels
 
Ingenieria de requisitos - Recolectando la información
Ingenieria de requisitos  - Recolectando la informaciónIngenieria de requisitos  - Recolectando la información
Ingenieria de requisitos - Recolectando la informaciónJose Diaz Silva
 
Ingenieria de requisitos
Ingenieria de requisitosIngenieria de requisitos
Ingenieria de requisitosZuleima
 

Mais procurados (20)

Obtencion de requisitos
Obtencion de requisitosObtencion de requisitos
Obtencion de requisitos
 
Metodologia elicitacion
Metodologia elicitacionMetodologia elicitacion
Metodologia elicitacion
 
¿Qué hacer para dominar el arte del levantamiento de requerimientos?
¿Qué hacer para dominar el arte del levantamiento de requerimientos?¿Qué hacer para dominar el arte del levantamiento de requerimientos?
¿Qué hacer para dominar el arte del levantamiento de requerimientos?
 
Tools elicitation
Tools elicitationTools elicitation
Tools elicitation
 
Ensayo ingenieria de requisitos
Ensayo ingenieria de requisitosEnsayo ingenieria de requisitos
Ensayo ingenieria de requisitos
 
36435062 analisis-de-riesgos
36435062 analisis-de-riesgos36435062 analisis-de-riesgos
36435062 analisis-de-riesgos
 
5.comprensión de los requerimientos
5.comprensión de los requerimientos5.comprensión de los requerimientos
5.comprensión de los requerimientos
 
Ingeniería de requisitos(ir)
Ingeniería de requisitos(ir)Ingeniería de requisitos(ir)
Ingeniería de requisitos(ir)
 
Necesidades vs requerimientos
Necesidades vs requerimientosNecesidades vs requerimientos
Necesidades vs requerimientos
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
ingenieria de requerimientos
ingenieria de requerimientos ingenieria de requerimientos
ingenieria de requerimientos
 
Metodología ICONIX
Metodología ICONIXMetodología ICONIX
Metodología ICONIX
 
Ing.requerimientos
Ing.requerimientosIng.requerimientos
Ing.requerimientos
 
Etapa de estudio de viabilidad de un proyecto informático c4
Etapa de estudio de viabilidad de un proyecto informático c4Etapa de estudio de viabilidad de un proyecto informático c4
Etapa de estudio de viabilidad de un proyecto informático c4
 
Introducción a la Ingeniería de Requerimientos
Introducción a la Ingeniería de RequerimientosIntroducción a la Ingeniería de Requerimientos
Introducción a la Ingeniería de Requerimientos
 
2. requerimientos del software
2. requerimientos del software2. requerimientos del software
2. requerimientos del software
 
Ingeniería de requisitos-UDO MONAGAS
Ingeniería de requisitos-UDO MONAGASIngeniería de requisitos-UDO MONAGAS
Ingeniería de requisitos-UDO MONAGAS
 
TÉCNICAS QUE SE IMPLEMENTAN EN LA
TÉCNICAS QUE SE IMPLEMENTAN EN LA  TÉCNICAS QUE SE IMPLEMENTAN EN LA
TÉCNICAS QUE SE IMPLEMENTAN EN LA
 
Ingenieria de requisitos - Recolectando la información
Ingenieria de requisitos  - Recolectando la informaciónIngenieria de requisitos  - Recolectando la información
Ingenieria de requisitos - Recolectando la información
 
Ingenieria de requisitos
Ingenieria de requisitosIngenieria de requisitos
Ingenieria de requisitos
 

Destaque

Calificaciones Estudiantes Diplomado Uml
Calificaciones Estudiantes Diplomado UmlCalificaciones Estudiantes Diplomado Uml
Calificaciones Estudiantes Diplomado UmlJosse Perez
 
Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Foquita05
 
Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Isabel Gómez
 
Creacion de tablas SQL Server 2008
Creacion de tablas SQL Server 2008Creacion de tablas SQL Server 2008
Creacion de tablas SQL Server 2008jeshito111
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoAntonio Palomares Sender
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosRaymond Marquina
 
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Pablo Ariel Di Loreto
 
Visual studio 2010 parte i
Visual studio 2010 parte iVisual studio 2010 parte i
Visual studio 2010 parte iYuri Barzola
 
Programacion cotidiana con VS2010
Programacion cotidiana con VS2010Programacion cotidiana con VS2010
Programacion cotidiana con VS2010Jersson Dongo
 
Planillas de recibo y despacho de correspondencia
Planillas de recibo y despacho de correspondenciaPlanillas de recibo y despacho de correspondencia
Planillas de recibo y despacho de correspondenciaDaniel K Velasco
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de softwareEdgardo Rojas
 
Crear Calculadora visual Studio 2008
Crear Calculadora visual Studio 2008Crear Calculadora visual Studio 2008
Crear Calculadora visual Studio 2008Johniel Cordero
 
Visual Studio 2012
Visual Studio 2012Visual Studio 2012
Visual Studio 2012Byron Paguay
 
Sistema de Archivo y Manejo de Correspondencia
Sistema de Archivo y Manejo de CorrespondenciaSistema de Archivo y Manejo de Correspondencia
Sistema de Archivo y Manejo de Correspondenciamarilulopezsoto
 
Sistemas de Archivo y Manejo de Correspondencia
Sistemas de Archivo y Manejo de CorrespondenciaSistemas de Archivo y Manejo de Correspondencia
Sistemas de Archivo y Manejo de Correspondenciaguestb250c0
 

Destaque (18)

Calificaciones Estudiantes Diplomado Uml
Calificaciones Estudiantes Diplomado UmlCalificaciones Estudiantes Diplomado Uml
Calificaciones Estudiantes Diplomado Uml
 
Novedades De Visual Studio 2010
Novedades De Visual Studio 2010Novedades De Visual Studio 2010
Novedades De Visual Studio 2010
 
Curso visual studio
Curso visual studioCurso visual studio
Curso visual studio
 
Presentacion
PresentacionPresentacion
Presentacion
 
Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.Documentacion de las pruebas normas y certificaciones de software.
Documentacion de las pruebas normas y certificaciones de software.
 
Creacion de tablas SQL Server 2008
Creacion de tablas SQL Server 2008Creacion de tablas SQL Server 2008
Creacion de tablas SQL Server 2008
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entorno
 
ProgramacióN Orientada A Objetos
ProgramacióN Orientada A ObjetosProgramacióN Orientada A Objetos
ProgramacióN Orientada A Objetos
 
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
 
Visual studio 2010 parte i
Visual studio 2010 parte iVisual studio 2010 parte i
Visual studio 2010 parte i
 
Programacion cotidiana con VS2010
Programacion cotidiana con VS2010Programacion cotidiana con VS2010
Programacion cotidiana con VS2010
 
Planillas de recibo y despacho de correspondencia
Planillas de recibo y despacho de correspondenciaPlanillas de recibo y despacho de correspondencia
Planillas de recibo y despacho de correspondencia
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de software
 
Introduccion a Visual Studio
Introduccion a Visual StudioIntroduccion a Visual Studio
Introduccion a Visual Studio
 
Crear Calculadora visual Studio 2008
Crear Calculadora visual Studio 2008Crear Calculadora visual Studio 2008
Crear Calculadora visual Studio 2008
 
Visual Studio 2012
Visual Studio 2012Visual Studio 2012
Visual Studio 2012
 
Sistema de Archivo y Manejo de Correspondencia
Sistema de Archivo y Manejo de CorrespondenciaSistema de Archivo y Manejo de Correspondencia
Sistema de Archivo y Manejo de Correspondencia
 
Sistemas de Archivo y Manejo de Correspondencia
Sistemas de Archivo y Manejo de CorrespondenciaSistemas de Archivo y Manejo de Correspondencia
Sistemas de Archivo y Manejo de Correspondencia
 

Semelhante a Depuración de aplicaciones en visual studio

Estandar documentacion xml
Estandar documentacion xmlEstandar documentacion xml
Estandar documentacion xmlTohui
 
Estructura del c++ builder
Estructura del c++ builderEstructura del c++ builder
Estructura del c++ builderIvan Campos
 
01 Makecode introduccion a las placas microbit.pdf
01 Makecode introduccion a las placas microbit.pdf01 Makecode introduccion a las placas microbit.pdf
01 Makecode introduccion a las placas microbit.pdfDiegoCal4
 
Visual basic 6.0
Visual basic 6.0 Visual basic 6.0
Visual basic 6.0 Adrian Daza
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakubDemian Raschkovan
 
Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesAntonio Palomares Sender
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Antonio Palomares Sender
 
Borland Together Administracion Bases de Datos
Borland Together Administracion Bases de DatosBorland Together Administracion Bases de Datos
Borland Together Administracion Bases de DatosCarlos Cardenas Fernandez
 
Net capitulo I - fundamentos
Net   capitulo I - fundamentosNet   capitulo I - fundamentos
Net capitulo I - fundamentosredtacna
 
Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0Jose Ancianis
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Roger Campos
 

Semelhante a Depuración de aplicaciones en visual studio (20)

Estandar documentacion xml
Estandar documentacion xmlEstandar documentacion xml
Estandar documentacion xml
 
Estructura del c++ builder
Estructura del c++ builderEstructura del c++ builder
Estructura del c++ builder
 
01 Makecode introduccion a las placas microbit.pdf
01 Makecode introduccion a las placas microbit.pdf01 Makecode introduccion a las placas microbit.pdf
01 Makecode introduccion a las placas microbit.pdf
 
Visual basic 6.0
Visual basic 6.0 Visual basic 6.0
Visual basic 6.0
 
Dev c++
Dev c++Dev c++
Dev c++
 
Clase 1 jJAVA 2012
Clase 1 jJAVA 2012Clase 1 jJAVA 2012
Clase 1 jJAVA 2012
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
 
Tutorial de CodeBlocks
Tutorial de CodeBlocksTutorial de CodeBlocks
Tutorial de CodeBlocks
 
Act 8..1
Act 8..1Act 8..1
Act 8..1
 
Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de soluciones
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)
 
Visual studio c_
Visual studio c_Visual studio c_
Visual studio c_
 
Borland Together Administracion Bases de Datos
Borland Together Administracion Bases de DatosBorland Together Administracion Bases de Datos
Borland Together Administracion Bases de Datos
 
Net capitulo I - fundamentos
Net   capitulo I - fundamentosNet   capitulo I - fundamentos
Net capitulo I - fundamentos
 
Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#Desarrollo aplicaciones windows c#
Desarrollo aplicaciones windows c#
 
Android Studio
Android StudioAndroid Studio
Android Studio
 

Depuración de aplicaciones en visual studio

  • 1. Depuración de aplicaciones .Net en Visual Studio Debugging Tactics
  • 2. Contenidos • Contexto de depuración en Visual Studio. • Ciclo de desarrollo • Introducción Windows y .Net. • ¿Qué es .net? • Correspondencia entre .net y Visual Studio. • El IDE de visual studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
  • 3. Ciclo de desarrollo De bugging is twice as hard as writing the code in the first place.Therefore if you write the code as cleacerly as possible, you are by definition, not Smart enough to debug it. Brian Kernighan Depurar código tiene como objetivo encontrar las causas de un problema. El uso de técnicas de TDD incrementa el tiempo de desarrollo por 2 pero reduce el tiempo de debugging. (es cuestión de elegir como queremos que sea nuestro ciclo de desarrollo)
  • 4. Introduccion Windows y .net • En el entorno de Microsoft disponemos de 2 entornos de depuración. • Windows debugging. • Orientado al debugging de Aplicaciones nativas win32 y com principalmente drivers de dispositivos, productos office. VS. etc • Visual Studio Debugging. • Orientado principalmente al debugging de aplicaciones administradas .net Windows S.O. Win32. Aplicaciones nativas. Desarrollo de drivers y aplicaciones fuertemente acopladas al sistema operativo. Ejemplo: aplicaciones office y el propio Visual Studio. .Net Plataforma de desarrollo CLR + BCL Apl. administradas Entorno de desarrollo oop tanto local como distribuido. Facilitar el despligue de aplicaciones. Integración Ejemplo: ERP. Juegos. Etc.
  • 5. Que es .net? Las principales ventajas de hacer debugging en Visual Studio provienen realmente de estar utilizando .net. • Plataforma de Desarrollo compuesta de • Entorno de Ejecución (Runtime) • Bibliotecas de Funcionalidad (Class Library) • Lenguajes de Programación • Compiladores • Herramientas de Desarrollo (IDE & Tools) • Guías de Arquitectura • La evolución de la plataforma COM ¿Qué no es? • .NET no es un Sistema Operativo • .NET no es un Lenguaje de Programación • .NET no es un Entorno de Desarrollo • .NET no es un Servidor de Aplicaciones • .NET no es un producto empaquetado que se pueda comprar como tal
  • 7. IDE integrated development enviroment. An integrated development environment (IDE) or interactive development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion. • Source: http://en.wikipedia.org/wiki/Integrated_development_environment
  • 8. Contenidos • Contexto de depuración. • Configuración de depuración. • Herramientas del entorno de desarrollo. • Soluciones y proyectos • Problemas de carga de proyectos • Propiedades de la solución. • Propiedades del proyecto. • Propiedades del proyecto: Aplicación. • Propiedades del proyecto: Depuración. • Propiedades de proyectos y soluciones. • El IDE de visual studio. • Herramientas de depuración de visual studio.
  • 9. Herramientas del entorno de desarrollo Sugerencias para el entorno de desarrollo de 2010. IDE • Microsoft Visual Studio 2010, ediciones Premium o Ultimate. • Microsoft Visual Studio 2010 Service Pack 1. SDK. • Windows x.y SDK • Visual studio SDK, SDK sp1 Extensiones de la galería de visual studio. • Stylecop • FXCop • PowerCommands for Visual Studio 2010 • Productivity power tools for visual studio • Team founsdation server power tools • Vsix explorer • Nuget. • GIT. • Otras sugerencias: • http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio • http://geekswithblogs.net/sdorman/archive/2014/10/05/favorite-visual-studio-extensions.aspx
  • 10. Configuración de opciones VS • Si tenemos 2 instancias abiertas de visual studio y modificamos la configuración de una de ellas es posible que la segunda no se actualize. Por lo que esta operativa solo se debería llevar a cabo con una única instancia de VS. En caso de que si se actualice puede ser debido a que el Registro haya almacenado la misma clave para ambas instancias lo que además es un comportamiento indeseable.
  • 11. Soluciones y proyectos • Soluciones y proyectos son los contenedores que permiten administra los elementos necesarios para la construcción de aplicaciones. Estos elementos son: Referencias (Dlls con las enlazar), Metadatos, Configuraciones de compilación, carpetas, archivos, etc. • Las soluciones se definen en dos archivos los .sln y los .slu (metadatos y opciones del usuario de V.S. como la inclusión de nuevos elementos en la toolbox) • Los proyectos permiten administrar de forma lógica sus componentes, compilarlos y depurarlos.
  • 12. Problemas de carga de proyectos • Visual studio proporciona diversas plantillas de proyecto así como de solución o de elemento. Algunas de estas plantillas de proyecto se instalan de forma opcional con SDKs específicos u otro tipo de extensiones como puede ser los proyectos de MVC. En algunos casos esto significa que si no tienes instalado la tecnología adecuada no podrás cargar el proyecto que la usa indicándote el Visual Studio que no ha sido capaz de cargar dicho proyecto marcándolo como “no disponible”. • Para averiguar que tecnología, extensión o sdk debemos instalar podemos editar el fichero “.csproj” aprovechando que el mismo esta descargado. • Al editarlo comprobamos que dicho fichero que solo es accesible si “descargamos” el proyecto es en realidad un fichero xml con el configuramos las características comportamiento del proyecto. • Localizamos entonces el Global id del proyecto con el atributo xml <ProjectTypeGuids> • Que nos proporciona un lista de globals Id asignados a los tipos de proyecto que intervienen en dicho proyecto. • Después podemos consultar este en http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type- GUIDs o en http://www.mztools.com/articles/2008/mz2008017.aspx • Y averiguar así que tecnología debemos incluir para poder cargar el proyecto. • Importante muchas extensiones es conveniente instalarlas con el visual studio cerrado o en caso contrario nos obligara a reiniciarlo para poder hacer uso de las nuevas características incorporadas.
  • 13. Propiedades de la solución Acceso 1. En el Explorador de soluciones, seleccione una solución. 2. Elija Páginas de propiedades en el menú Ver (view) o sacar el menú contextual en el ítem de propiedades de la solución del explorador de soluciones. Nos aparece un cuadro de dialogo con Las propiedades comunes a los proyectos y las propiedades de cada una de las configuraciones, Debug, Release etc. En la sección “Propiedades de configuración”. Para poder cambiar estas propiedades debemos ir al configuration manager con el botón o con el menú de “Build” la opción de configuration manager. Aquí podemos establecer para cada configuración de compilación/Construcción cual es la plataforma para la que queremos compilar. De esta manera podemos hacer debuging en una plataforma hacer reléase en otra etc. También podemos incluir o no código con las directivas de compilación condicional. Y el orden en que queremos que se realice la compilación.
  • 14. Configuration Manager Por norma general es conveniente que en un producto a entregar todas las compilaciones coincidan en la plataforma que se desea entregar. Por defecto nos aparecerá x86 pero si deseamos contar con las ventajas de otras plataformas con x64 o itanium tenemos que añadirlas. Solo es necesario tener en cuenta que solo podemos añadirlas una única vez para todos los proyectos de la solución pero luego tenemos que seleccionarlas para cada proyecto. De esta forma podemos crear una serie de productos con diversas “releases” cada una de ellas orientadas a diferentes plataformas. NOTA: para compilar simultáneamente varias configuraciones podemos utilizar la compilación por lotes o batch compiling.
  • 15. Propiedades del Proyecto: project designer Para acceder a las propiedades del proyecto basta con hacer doble click en la carpeta de propiedades o seleccionar con el menú contextual en el explorador de soluciones o en el menú de proyecto la opción “Propiedades” Aparecera el dialogo de “Propiedades del proyecto”. Con diversas opciones en las Pestañas de la izquierda. Las pestañas que ahora nos interesan son: Aplicación, Compilar y Debug Para cualquier duda sobre el significado de estas pestañas solo es necesario pulsar al tecla f1 para sacar la ayuda correspondiente. NOTA: El dialogo de propiedades del proyecto también se conoce como Project Designer.
  • 16. Propiedades del Proyecto: Aplicación. • Entre las propiedades que nos interesan tenemos. • El target framework que en vs2010 nos aparece por defecto el framework 4 cliente profile. El cual es un subconjunto de .net redistribuible el cual renuncia a algunas características de .net como son: ASP.NET, funcionalidad avanzada de Windows Communication Foundation (WCF) .NET Framework Data Provider para Oracle y la compilación por MSBuild. • Igualmente el output type nos resultara de interés sobre todo para organizar la depuración de servicios Windows. Los cuales se establecen como Windows application pero que cambiaremos a Console application para facilitar su debuggin como veremos mas adelante.
  • 17. Propiedades de build event • Aquí podemos invocar aplicaciones o copiar resultados desde una carpeta a otra para facilitar el posterior despliegue de aplicaciones. • Por ejemplo los proyectos con prism pueden copiar de la carpeta de ensamblados a la carpeta de búsqueda de los módulos del proyecto. • O los proyectos de WCF pueden invocar a la utilidad de svcutil para generar los clientes. • Estas invocaciones se pueden llevar a cabo en función del resultado de la compilación.
  • 18. Propiedades de compilación. • Elegimos la configuración de debugging y la plataforma sobre la que haremos el debug. (Gestionamos las configuraciones pero no establecemos cual es la configuración activa) • Separados por comas podemos establecer los símbolos de compilación condicional para la configuración que hemos seleccionado previamente. • Establecemos el warning level y aquellos códigos de warning de los que no queremos ser notificados. • Para facilitar el debug es mejor NO activar la optimización de código. • Para asegurar la coherencia de todos los ensamblados es mejor dirigir el camino de salida output path a una misma carpeta para todos los ensamblados que no correspondan a proyectos de aplicaciones web. Los cuales se dejaran en la carpeta por defecto bindebug o bin%configuración% • En el dialogo de “Avanzado” comprobar que para la configuración de debug la opción debug info es “full”.
  • 19. Ficheros PDB Fuente : http://mariangemarcano.blogspot.com.es/2011/11/visual-studio-debugging-and-remote.html La configuración “Debug” genera información de símbolos completa de símbolos sin optimización. La configuración “Reléase” optimiza el código y genera solo los ficheros PDB pero no incluye el atributo “Debuggable” Por lo que el código fuente y los números de línea no serán visibles en una sesión de depuración pero la existencia del PDB permitirá que esta información sea utilizada por el stacktrace. La optimización por su parte es eliminada por que este proceso reordena las instrucciones para obtener un código mas eficiente. Esta optimización se realiza en dos pasos cuando se obtiene el código msil y cuando se compila siendo en su mayor parte realizada por el JIT. Los ficheros PDB con el atributo de debuggable son los que permiten realizar la depuración en remoto para lo cual ambas maquinas necesitan permisos de acceso mutuamente. Otra característica interesante para hacer debugging de un ejecutable es crear un fichero con idéntico nombre que el ejecutable y tipo .ini con el siguiente código. [.Net Framework Debugging Control] GenerateTrackingInfo=1 AlloOptimized=0
  • 20. Propiedades de Proyecto: Depurar • Podemos establecer como ejecutamos el proyecto O si necesita ser ejecutado por otro proyecto de la solución. (módulos de prism) • Podemos establecer los argumentos que pasaríamos si estuviéramos invocando la aplicación desde una consola. • Podemos establecer si la ejecución se realiza en otra maquina o directorio. • Establecemos si la ejecución de este proyecto va a usarse el host de visual studio. Recordar que cuando ejecutamos .net el compilador genera MSIL y el CLR nos proporciona un host de ejecución que nos proporciona un dominio de aplicación (una forma de aislamiento preventivo entre aplicaciones ) cuando no permitimos o no podemos utilizar el host de visual studio estaremos renunciando a un gran numero de capacidades de debugging como suele ser cuando seleccionamos la opción de reléase.
  • 21. Configuración de depuración remota 1. Compartimos la carpeta para la maquina remota o instalamos c:Program Files(x86) Microsoft visual Studio 10.0 IDE remote Debugger 2. Se copian las tres carpetas pues en SO de 64 bits 3. También se puede instalar con el instalador de remote debugger que se encuentra en el disco de instalación de visual studio. Rdbgsetup_xXX.exe que lo instalara como un servicio. 4. Se ejecuta msvsmon.exe
  • 22. Contenidos • Contexto de depuración en Visual Studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
  • 23. Ventana: Jerarquía de llamadas La jerarquía de llamadas permite navegar por el código mostrando todas las llamadas a y desde un método, propiedad, o un constructor seleccionados. Esto permite entender mejor cómo fluye el código y evaluar los efectos de los cambios que se realizan en el código. Puede examinar varios niveles de código para ver cadenas complejas de llamadas a métodos y puntos de entrada adicionales al código, lo que le permite explorar todas las posibles rutas de ejecución. Sin embargo Jerarquía de llamadas no encuentra las referencias del grupo de métodos, que contiene ubicaciones en las que un método se agrega como controlador de eventos o se asigna a un delegado. Para buscar todas las referencias a un método, puede usar el comando Buscar todas las referencias. También se puede ejecutar el menú contextual sobre los nodos de la jerarquía de llamadas. por ejemplo ir a la definición (f12) que navegara hasta el código o el PDB correspondiente. Jerarquía de llamadas está disponible en tiempo de diseño, a diferencia de la pila de llamadas que muestra el depurador.
  • 24. Elegir elementos de la caja de herramientas • Este dialogo nos permite elegir las opciones de nuestro toolbox para algunos de los principales namespaces en uso. • Se usa fundamentalmente para configurar los componentes que queremos para WPF. Menú herramientas, opción elegir elementos de la caja de herramientas
  • 25. Insertar código snipets o envolver codigo • Insertar snipet ctrol-k,x (insert with..) • Envolver snipet ctrol-k,s (surround with) • https://vssnippets.codeplex.com/ en esta url existe una lista de snippets consistentes con las reglas de stylecop para instalarlos solo es necesario REEMPLAZARLOS en una de estas dos carpetas en función de la arquitectura. • C:Program Files (x86)Microsoft Visual Studio 10.0VC#Snippets1033Visual C# ó C:Program FilesMicrosoft Visual Studio 10.0VC#Snippets1033Visual C#
  • 26. Ventana de comandos Acceso : menú ver /view seleccione “otras ventanas” seleccione “ventana comando” La ventana de comando se usa para ejecutar comandos, comandos que aparecen en el propio menú del IDE y otros que no aparecen. Los mas usados son “of” para open file. Que nos proporciona una búsqueda incremental de los ficheros de la solución a medida que vamos escribiendo. “g” para debug.start que inicia una sesión de debugging. “?” Para debug.print de una expresión o valor. “??” Para un quick watch “Bl” breakpoint window. “Help” Para la ayuda de la propia ventana. “Eval” para Debug.evaluateStament “Q” stop debugging Para una completa lista de los comandos disponibles consultar. https://msdn.microsoft.com/es-es/library/c338aexd.aspx Y https://msdn.microsoft.com/es-es/library/c3a0kd3x.aspx
  • 27. Tareas, errores y miscelánea • Ventana “Lista de errores”. No hace falta comentar. • “Ctrl-G” goto line usar en combinación con el comando of (fichero) • Lista de tareas: por comentario Los tokens son(TODO, HACK ). Para crear nuevos tokens Opciones/Enviroment o contexto/ Lista de tareas, tienes un dialogo para añadir nuevos tokens. (IMPORTANTE PARA GESTIONAR NUESTRA DEUDA TÉCNICA) Opciones: de proyectos: • marcar la opción de realizar seguimiento de elemento activo. • Guardar proyectos al crearlos. (elegir) Modificadores denenv Consultar : https://msdn.microsoft.com/es-es/library/xee0c8y7(v=vs.100).aspx
  • 28. Ventana de inmediato Esta ventana nos permite realizar depuración en tiempo de diseño sin necesidad de ejecutar el programa. • La ventana de inmediato nos permite evaluar expresiones tanto en modo diseño como en modo debug. Ver ejemplo de código. • Esta ventana resulta particularmente útil por ejemplo cuando una sentencia return realiza el calculo de lo que devuelve. Por norma general el colocar el cursor encima no nos permite saber cual es el resultado final pero con esta ventana podemos copiar el la expresión y ejecutarla para saber el resultado. • El alias de comando “?” corresponde a “Debug.Print (expresión)” • En tiempo de diseño podemos ejecutar métodos definidos en nuestro código. Si este tiene un punto de interrupción saltara el debugger en dicho punto. • Importante el signo igual “=” en esta ventana se interpreta como un operador de comparación. No es posible realizar asignaciones en la ventana de comando. • Es posible ejecutar un comando de la ventana decomando dentro de la ventana de inmediato precediéndolo de el signo “mayor que” “>” • El modo marcar permite usar una instrucción anterior. • Esta ventana permite trabajar también con la memoria y los registros. (fuera del alcance en este curso)
  • 29. Ventana: Autos • Solo disponible en modo depuración con el programa en break mode. • Nos proporciona los nombres de las variables el tipo y el valor. • Guarda los valores en las instrucciones anteriores y posteriores. • Nos permite cambiar el valor de dichas variables. • Nos permite ver el valor devuelto por un método
  • 30. Información de Carga de módulos • Solo disponible en modo debug. • Nos proporciona un listado de los asembblies que hemos cargado, el path del mismo, el path de su fichero de PDB y el thread en el que se están ejecutando.
  • 31. Contenidos • Contexto de depuración en Visual Studio. • Configuración de Depuración en Visual Studio • Herramientas de depuración Visual Studio. • Como depurar en Visual Studio.
  • 32. Iniciar/parar la ejecución en modo depurado. F5 – Depurar –Debug F11 – paso a paso por instrucciones - step over. Inicia la ejecución y se para en la primera instrucción del programa. Estas opciones también están en el menú contextual de los ficheros de proyectos pero permiten ser ejecutadas contra un proyecto no marcado como “startup Project” Ctrl-f10 - Ejecutar hasta el cursor- igualmente opción de menú contextual en el código fuente. Stop. Finaliza el proceso de debugging Break all pausa el hilo de ejecución donde este se encuentre y mostrara el código fuente de donde se ha parado.
  • 33. Set next stament • Si te has pasado de sentencia en la ejecución paso a paso esta opción te permite hacer marcha atrás. • Advertencia el uso de esta opción puede resultar peligrosa si el stack o los registros se ha corrompido.
  • 34. Conectarse a procesos en ejecución Se lleva a cabo con el attach process • Depurar una aplicación no creada con viaul studio. • Depurar un proceso en un equipo remoto • Iniciar automáticamente el depurador de visual studio cuando un proceso se bloquee mientras se ejecuta fuera de visual studio. Esto es la depuración just in time. • Se recomienda usar el VS en modo administrador para ver todos los procesos. Ver ejemplo en vs.
  • 35. Permisos en depuración remota Depuración Administrada En la depuración remota con visual studio. Este se convierte en un cliente de la maquina donde se ejecuta el proceso para ello es necesario instalar o ejecutar los servicios que hemos descrito anteriormente que actúan como servidor. La comunicación entre amsbo es bidireccional y por tanto los permisos tienen que tener en cuenta ambas direcciones lo mas sencillo será que las cuentas locales de administrador tengan permisos entre ambas maquinas y los puertos de tcp y udp estén abiertos. Los problemas de permisos son el principal escollo para realizar la depuración remota. Pero tener estos permisos abiertos hace al sistema de seguridad vulnerable (sobre todo en la modalidad sin autenticación)por lo que se recomienda que dichos permisos sean temporales.
  • 36. Especificar una versión de .net El depurador de Visual Studio 2010 puede depurar versiones anteriores de Microsoft .NET Framework así como la versión actual. Si inicia una aplicación desde Visual Studio, el depurador siempre puede identificar la versión correcta de .NET Framework para la aplicación que se está depurando. Si la aplicación ya se está ejecutando y se utiliza Adjuntar a, es posible que el depurador no siempre identifique una versión anterior de .NET Framework. Si esto ocurre, aparecerá el mensaje de error: • El depurador ha deducido de manera equivocada la versión de .NET Framework que va a utilizar la aplicación. • En estos raros casos, puede establecer una clave del Registro para indicar al depurador qué versión utilizar. • Para especificar una versión de .NET Framework para la depuración 1. Examine el directorio WindowsMicrosoft.NETFramework para encontrar las versiones de .NET Framework instaladas en su equipo. Los números de versión tienen un aspecto similar al siguiente: 2. V1.1.4322 3. Identifique el número de versión correcto y anótelo. 4. Inicie el Editor del Registro (regedit). 5. En el Editor del Registro, abra la carpeta HKEY_LOCAL_MACHINE. 6. Navegue a: HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine{449EC4CC-30D2-4032-9256-EE18EB41B62B} 7. Si la clave no existe, haga clic con el botón secundario en HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio10.0AD7MetricsEngine y haga clic en Nueva clave. Asigne el nombre {449EC4CC- 30D2-4032-9256-EE18EB41B62B } a la nueva clave. 8. Después de navegar a {449EC4CC-30D2-4032-9256-EE18EB41B62B }, examine la columna Nombre y encuentre la clave CLRVersionForDebugging. 1. Si la clave no existe, haga clic con el botón secundario del mouse en {449EC4CC-30D2-4032-9256-EE18EB41B62B} y haga clic en Nuevo valor de cadena. A continuación, haga clic con el botón secundario en el nuevo valor de cadena, haga clic en Cambiar nombre y escribaCLRVersionForDebugging. 9. Haga doble clic en CLRVersionForDebugging. 10. En el cuadro Editar cadena, escriba el número de versión de .NET Framework en el cuadro Valor. Por ejemplo: V1.1.4322 11. Haga clic en Aceptar. 12. Cierre el Editor del Registro. 13. Si todavía obtiene un mensaje de error cuando empieza a depurar, compruebe que ha escrito correctamente el número de versión en el Registro.Compruebe también que está utilizando una versión de .NET Framework admitida por Visual Studio. El depurador es compatible con la versión actual de .NET Framework y con las versiones anteriores, pero puede no serlo con versiones futuras.
  • 37. Depuración de múltiples procesos • Los procesos corresponden a las aplicaciones y se ejecutan dentro de un dominio. • Los hilos (Subprocesos) corren dentro de los procesos. • Diferentes hilos y procesos pueden ser ejecutados de forma paralela. • El procesamiento en paralelo suele necesitar de sincronización para acceder a recursos. Cuando uno o más hilos esperan a un proceso que jamás queda disponible es una condición conocida como “Dead Lock” • La depuración se lleva cabo en el host que Visual Studio proporciona. • Las aplicaciones de script no tienen un proceso. Sino que utilizan otro host como DIIs , o el propio Visual Studio. (t4, dsl) • Una aplicación .exe puede lanzar varios procesos. Para cambiar de un proceso a otro utilizamos la barra de herramientas “Ubicación de depuración” (debug location).
  • 38. Herramientas de debuggin de hilos y procesos Las ventanas del menú de depuración (La mayor parte de ellas son accesibles cuando se esta ejecutando la depuración.) • El attach to process. (menú debug y tools) • La ventana de procesos. • La ventana de hilos • La ventana de Pila de llamadas Call Stack. • La ventana de tareas paralelas Parallel tasks.
  • 39. Ventana de pilas paralelas Si consultamos la ventana de parallel stacks de una aplicación “hello Wordl” observaremos que en modo que en modo reléase solo tenemos un único hilo. Sin embargo en modo debug tenemos varios hilos mas que son los que nos permiten hacer el debugging y que pertenecen al host de visual studio.
  • 40. Depuración just in time • Le depuración just in time hace que una aplicación invoque al depurador en caso de que se produzca una excepción. Este comportamiento se puede deshabilitar en las opciones del debugger pero no evitara que el error salte. Ver ejemplo en código.
  • 41. Depuración de servicios Windows Instalando La ejecución de un servicio se debe llevar a cabo en el contexto del Administrador de control de servicios en vez de en Visual Studio. Por tanto para depurarlo es necesario instalarlo y realizar un attach del proceso correspondiente. En este caso es necesario tener en cuenta que el método on-start del servicios debe retornar antes de 30 seg. Pasado ese tiempo si no ha retornado por un punto de interrupción el administrador de servicios no lo iniciara. Esto significa que el método on-start no se puede depurar si no se se crea un segundo servicio temporal para cargar el proceso de servicio.
  • 42. Inciso Windows Services introducción Existen dos tipos de servicios Windows : • Aquellos que solo ejecutan un servicio en un único proceso. Y cuyo tipo es Win32OwnProcess • Aquellos que ejecutan varios servicios en un único proceso y cuyo tipo es Win32ShareProcess Por esta razón la plantilla de Windows Services nos proporciona este código en el fichero Program.cs static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); }
  • 43. Depuración de Servicios Windows sin instalar Opción de depuración de WS. Convertir el WS en aplicación de consola. • Este método pasa por realizar una comprobación inicial del enviroment y varia la forma de invocar el servicio según si esta instalado o no. Lo que permite permite realizar una depuración dentro del Visual Studio. Para ello eliminamos el fichero program.cs y pasamos el metod main a nuestra clase derivada de System.Windows.Services static void Main(string[] args) { if (Environment.UserInteractive) { var a = new WSNameService(); a.OnStart(args); } else ServiceBase.Run(new WSNameService()); }
  • 44. Best practices Windows Services • Capturar las excepciones no gestionadas en el constructor del servicio public WSNameService() { this.ServiceName = "WSNameService"; AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); } void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var ex = (Exception)e.ExceptionObject; try { logService.Fatal("Fallo fatal", ex); } catch (Exception ex2) { // en este caso estamos escribiendo en un log de texto en una carpeta temporal File.WriteAllText(@"c:tempWSNameService" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt", ex.ToString() + "rn" + (ex.Source ?? "")); } finally { } }
  • 45. Intellitrace Intellitrace realiza una grabación del historial de ejecución. Registra eventos y/o llamadas a función. Permite situarse en cualquier punto del historial y consultar el estado del programa en dicho punto. No es necesario reiniciar la depuración para recrear los errores o eventos. Existen dos formas de usarlo, grabar todo y luego filtrar o grabar exclusivamente los eventos en los que se sospecha que ocurre el problema. Se recomienda mantener las ventanas de variables locales y automático abiertas junto con la propia ventana de intellitrace. A continuación cuando se pare la ejecución podrá consultarse cualquiera de los eventos grabados y analizar su contexto.
  • 46. Intellitrace • Algunas llamadas pueden aparecer atenuadas para indicar que pertenecen a un modulo del que no se graba. • Cuando se esta revisando la información de eventos se puede reflejar en la ventana de código la parte de fuente que corresponde con el evento o la llamda en ese punto que esta marcado tenemos opciones de navegación adicionales. • Igualmente podemos buscar desde la ventana de código cuales son las instancias de esa llamada en el histórico de Intellitrace. • La sesión de intellitrace se puede salvar en disco y recuperar posteriormente. • EL archivo en que se guarda es un “*.itrace” • Es conveniente activar la grabación solo cuando sea necesario.
  • 47. Es posible utilizar intellitrace en sistemas desplegados con el Microsoft Monitoring Agent y el recolector de datos de diagnostico de intellitrace. Para ampliar información consultar https://msdn.microsoft.com/es-es/library/dn449058.aspx https://msdn.microsoft.com/es-es/library/hh398365.aspx https://msdn.microsoft.com/es-es/library/dn798710.aspx
  • 48. Gracias • Javier Hermoso • Freelance .net • jhermoso@pretor.es
  • 49. Algunas Fuentes • Depurar en visual studio. • https://msdn.microsoft.com/es-es/library/sc65sadd(v=vs.80).aspx • http://www.codeproject.com/Reference/720512/List-of-Visual- Studio-Project-Type-GUIDs • http://www.mztools.com/articles/2008/mz2008017.aspx

Notas do Editor

  1. Microsoft .NET es una plataforma de desarrollo y ejecución de aplicaciones. Esto quiere decir que no sólo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misión crítica, sino que también nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecución de las mismas sea óptima. Los componentes principales de la plataforma .NET son: Un entorno de ejecución de aplicaciones, también llamado “Runtime”, que es un componente de software cuya función es la de ejecutar las aplicaciones .NET e interactuar con el sistema operativo ofreciendo sus servicios y recursos. Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una enorme cantidad de componentes ya programados listos para ser consumidos por otras aplicaciones. Un conjunto de lenguajes de programación de alto nivel, junto con sus compiladores y linkers, que permitirán el desarrollo de aplicaciones sobre la plataforma .NET. Un conjunto de utilitarios y herramientas de desarrollo para simplificar las tareas más comunes del proceso de desarrollo de aplicaciones Documentación y guías de arquitectura, que describen las mejores prácticas de diseño, organización, desarrollo, prueba e instalación de aplicaciones .NET A lo largo de esta presentación se analizará cada uno de estos puntos con mayor detalle. Por otra parte, .NET representa la evolución COM (Component Object Model), la plataforma de desarrollo de Microsoft anterior a .NET y sobre la cual se basaba el desarrollo de aplicaciones Visual Basic 6 (entre otros tantos lenguajes y versiones).
  2. Todo lo que vamos a ver se puede aplicar a casi todas las versiones de Visual studio si bien nos vamos a centrar en la 2010 con el framework 4.0. Este esquema nos presenta las tecnologías que cada una de las versiones de .net va incluyendo y por tanto nos indican a que tecnologías estamos renunciando cuando elegimos un determinado framework de desarrollo.
  3. El service pack de visual studio incorpora herramientas y tecnologías que no están contemapladas en la priemra versión y que resultan fundamentales para programar en net.4.0 El SDK de Windows dependerá del sistema operativo en el que vayamos a trabajar y se ha incluido por que contiene herramientas especificas de debugging para aplicaciones nativas. Sibine quedan fuera del alcance de este curso. Igualmente el SDK de visual studio nos incorpora herramientas con las que podemos extender las capacidades del visual studio en cualquiera de sus facetas pero que igualmente nos queda fuera del alcance de este curso. Style cop y FX cop nos permite asegura el cumplimiento de una serie de reglas de formato a la hora de escribir el código. Estas reglas pueden exigir que se incorporen determinados bloques como comentarios xml asi como el formato de indentación de nuestro código con obejto de que todos los integrantes del equipo sigan las misma reglas de edidión. Power commands y produtivity tools nos proporcionan una interface mejorada del ide en aspecots muy básicos. Vsix explorer nos amplia la capacidad de extender el visual estudio con nuestros propias plantillas de proyecto, de solución o de elemento. Nuget es la mejor opción para incorporar y mantener nuestras librerías de terceros y también nos permite desarrollar un nuget privado como opción a tener que incluir en el GAC las librerías desarrolladas internamente.