En Visual Studio y Visual Studio Code, ejecutar un proyecto sin iniciar el depurador permite comprobar el funcionamiento de la aplicación sin utilizar una sesión de depuración. Esta diferencia es importante cuando solo se necesita iniciar el programa, observar su salida o verificar que la compilación se completa correctamente.
La forma de conseguirlo depende mucho de la plataforma: ¿es una aplicación web? ¿un programa de consola?
Ejecutar sin depurar en Visual Studio
La mayoría de nosotros conocemos los comandos básicos como F5 para comenzar la depuración, F9 para poner un punto de interrupción o F11 para entrar dentro de la implementación.
Para iniciar la aplicación sin depurar, se utiliza el comando correspondiente de ejecución sin depuración de Visual Studio, en lugar de F5. De esta forma, el proyecto se compila y se inicia normalmente, pero no se abre una sesión de depuración ni se detiene la ejecución en los puntos de interrupción.
Al compilar un proyecto, los errores se muestran en el panel Resultados. Haz doble clic en un error para buscar el marcado relacionado con el error.
La descripción del error puede ayudarle a comprender cómo corregirlo. La lista también especifica el nombre del archivo y el número de línea donde se produce el error.
Errores de compilación antes de ejecutar el proyecto
Si el proyecto no se compila correctamente, la ejecución sin depurar tampoco podrá iniciarse. Microsoft Build Engine es una plataforma para compilar aplicaciones.
Este motor, que también se conoce como MSBuild, proporciona un esquema XML para un archivo de proyecto que controla cómo procesa y compila software la plataforma de compilación.
Visual Studio usa MSBuild, pero MSBuild no depende de Visual Studio. Visual Studio usa MSBuild para cargar y compilar proyectos administrados.
Los archivos de proyecto de Visual Studio (.csproj, .vbproj, .vcxprojy otros) contienen código XML de MSBuild que se ejecuta al compilar un proyecto en el IDE.
La configuración del proyecto que se agrega o cambia mediante la interfaz de Visual Studio se refleja en el archivo de .*proj que se genera para cada proyecto.
Visual Studio usa una instancia hospedada de MSBuild para compilar proyectos administrados.
Con Visual Studio, puede compilar una aplicación para que se ejecute en cualquiera de las versiones de .NET Framework o .NET Core, incluido .NET 5 y versiones posteriores.
Por ejemplo, puede compilar una aplicación para que se ejecute en .NET Framework 3.5 SP1 en una plataforma de 32 bits y puede compilar la misma aplicación para que se ejecute en .NET Framework 4.8 en una plataforma de 64 bits.
Compilar mediante MSBuild
Para instalar MSBuild en un sistema Windows que no tiene Visual Studio, vaya a Herramientas de compilación para Visual Studio en la página de descargas.
Para .NET Core y .NET 5 o posterior, otra manera de obtener el equivalente a MSBuild es instalar el SDK de .NET.
El comando de compilación de .NET dotnet build está disponible con el SDK de .NET en macOS, Windows o Linux.
El comando de compilación de .NET dotnet build es una capa delgada sobre la versión de .NET Core de MSBuild.exe.
Para ejecutar MSBuild en un símbolo del sistema, pase un archivo del proyecto a MSBuild.exe junto con las opciones de la línea de comandos adecuadas.
Las opciones de línea de comandos permiten establecer propiedades, ejecutar destinos específicos y establecer otras opciones que controlan el proceso de compilación.
Para .NET Core y .NET 5 o posterior, normalmente se usa dotnet build para invocar MSBuild.
Consulte dotnet build.
La línea de comandos dotnet build --help enumera las opciones de línea de comandos específicas de dotnet build, no todas las opciones de MSBuild.exe, pero todavía puede usar todas las opciones de línea de comandos enumeradas en la referencia de línea de comandos de MSBuild.
Puede escribir código en el IDE de Visual Studio, pero ejecutar compilaciones mediante MSBuild.
Puede usar Azure Pipelines para compilar, probar e implementar automáticamente la aplicación.
El sistema de compilación puede ejecutar automáticamente compilaciones cuando los desarrolladores comprueban el código (por ejemplo, como parte de una estrategia de integración continua) o según una programación (por ejemplo, una compilación de prueba de comprobación de compilación nocturna).
Azure Pipelines compila el código mediante MSBuild.
Estructura XML de los proyectos MSBuild
MSBuild usa un formato de archivo de proyecto basado en XML que es sencillo y extensible.
El formato de archivo de proyecto de MSBuild permite a los desarrolladores describir los elementos que se van a compilar y también cómo se van a compilar para diferentes sistemas operativos y configuraciones.
El sistema de compilación de Visual Studio almacena lógica específica del proyecto en el propio archivo del proyecto y usa archivos XML de MSBuild importados con extensiones como .props y .targets para definir la lógica de compilación estándar.
Los archivos .props definen propiedades de MSBuild y .targets archivos definen destinos de MSBuild.
Estos se denominan proyectos de estilo SDK.
Propiedades
Las propiedades representan pares clave-valor que se pueden usar para configurar compilaciones.
Las propiedades se declaran mediante la creación de un elemento que tiene el nombre de la propiedad como elemento secundario de un elemento PropertyGroup.
Puede definir una propiedad condicionalmente colocando un atributo Condition en el elemento.
El contenido de los elementos condicionales se omite a menos que la condición se evalúe como true.
Se puede hacer referencia a las propiedades en todo el archivo del proyecto mediante la sintaxis $(
Elementos
Los elementos son entradas en el sistema de compilación y normalmente representan archivos.
Los elementos se agrupan en tipos de elementos en función de los nombres de elementos definidos por el usuario.
Los elementos se declaran en el archivo de proyecto creando un elemento que tiene el nombre del tipo de elemento como elemento secundario de un elemento ItemGroup.
En MSBuild, los nombres de elementos y atributos distinguen mayúsculas de minúsculas.
Sin embargo, los nombres de propiedad, elemento y metadatos no están incluidos.
Los elementos se pueden declarar mediante caracteres comodín y pueden contener metadatos adicionales para escenarios de compilación más avanzados.
Tareas
Las tareas son unidades de código ejecutable que los proyectos de MSBuild usan para realizar operaciones de compilación.
Por ejemplo, una tarea podría compilar archivos de entrada o ejecutar una herramienta externa.
La lógica de ejecución de una tarea se escribe en código administrado y se asigna a MSBuild mediante el elemento UsingTask.
Puede escribir su propia tarea mediante la creación de un tipo administrado que implemente la interfaz ITask.
MSBuild incluye tareas comunes que puede modificar para adaptarse a sus requisitos.
Algunos ejemplos son Copy, que copia archivos, MakeDir, que crea directorios y Csc, que compila archivos de código fuente de Visual C#.
Una tarea se ejecuta en un archivo de proyecto de MSBuild creando un elemento que tiene el nombre de la tarea como elemento secundario de un elemento Target.
Las tareas suelen aceptar parámetros, que se pasan como atributos del elemento.
Tanto las propiedades como los elementos de MSBuild se pueden usar como parámetros.
Destinos
Los destinos agrupan las tareas en un orden determinado y exponen secciones del archivo de proyecto como puntos de entrada en el proceso de compilación.
A menudo, los objetivos se agrupan en secciones lógicas para aumentar la legibilidad y permitir la expansión.
Dividir los pasos de compilación en destinos le permite llamar a una parte del proceso de compilación desde otros destinos sin copiar esa sección de código en cada destino.
Los destinos se declaran en el archivo de proyecto utilizando el elemento Target.
En escenarios más avanzados, los destinos se pueden usar para describir las relaciones entre sí y realizar análisis de dependencias para que se puedan omitir secciones completas del proceso de compilación si ese destino es up-to-date.
Puede registrar errores de compilación, advertencias y mensajes en la consola u otro dispositivo de salida.
Solucionar el error «La tarea preLaunchTask 'build' finalizó con el código de salida 1»
Este mensaje indica que la tarea de compilación configurada para ejecutarse antes del lanzamiento terminó con errores. Por ese motivo, es necesario revisar primero el panel Resultados o la terminal para localizar el error original de compilación.
Al compilar un proyecto, los errores se muestran en el panel Resultados.
Haz doble clic en un error para buscar el marcado relacionado con el error.
La lista también especifica el nombre del archivo y el número de línea donde se produce el error.
Una vez corregidos los errores de compilación, vuelva a ejecutar la aplicación. Si la tarea build finaliza con el código de salida 0, el lanzamiento podrá continuar.
Configurar .NET Core en Visual Studio Code
Le doy a F5 para depurar, elijo .NET core, luego escojo el ejecutador de tareas .NET core tambien, me sale un error "La tarea preLaunchTask 'build' finalizó con el código de salida 1." pero sigo depurando y ahora me sale "launch: launch.json must be configured.
Aun así, en general, la forma de conseguirlo depende mucho de la plataforma: ¿es una aplicación web? ¿un programa de consola?
Una vez en VS Code F5->.NET core-> dependiendo si es un archivo para web, para consola o para Attach se abre el launch.json donde hay que cambiar el "path" del archivo que queremos depurar "program": "${workspaceRoot}/bin/Debug/cambiaraqui/cambiaraqui.dll".
Para saber el nombre del primero, este dato está en el project.json, en mi caso "netcoreapp1.0".
El segundo es un archivo .dll que se encuentra en "\bin\Debug\netcoreapp1.0".
Para ver el programa en ejecución hay que cambiar "externalConsole": true (en launch.json).
Luego elijo .NET core como ejecutador de tareas y ya no hay ningun error.
Qué revisar en launch.json
- La plataforma seleccionada debe corresponder al tipo de aplicación.
- Una aplicación web y un programa de consola requieren configuraciones de lanzamiento diferentes.
- La ruta de la propiedad "program" debe apuntar al archivo .dll generado por la compilación.
- El directorio de destino debe coincidir con el framework configurado en el proyecto.
- La opción "externalConsole": true permite ver el programa en una consola externa.
Si el nombre del framework o del archivo .dll no coincide con la carpeta generada en bin\Debug, la tarea de lanzamiento no encontrará el programa correcto.
Ejecutar un proyecto XML o XAML sin depurar
XML es un formato de datos, por lo que la acción de ejecución depende del tipo de proyecto que lo utilice. En una aplicación XAML, el archivo XML describe la interfaz, mientras que la ejecución corresponde a la aplicación que carga ese marcado.
Se producen errores de sintaxis si los archivos XAML o de código subyacente no siguen las reglas de formato del lenguaje.
También puede identificar y resolver errores simples de sintaxis de código subyacente, errores de compilación y errores en tiempo de ejecución en Blend.
Puedes usar las herramientas de Blend para Visual Studio para depurar el XAML en la aplicación.
Puede depurar el código XSLT en Visual Studio.
El depurador de XSLT admite la definición de puntos de interrupción, la visualización de los estados de ejecución de XSLT, etc.
Puede ejecutar código de línea en línea yendo al código, recorriéndolo o saliendo de él.
Puede iniciar el depurador si tiene una hoja de estilos o un archivo XML de entrada abierto en el editor.
Puede ir al código XSLT mientras depura una aplicación.
No se puede ir al código XSLT desde la clase XslTransform.
Al crear una instancia del objeto XslCompiledTransform, establezca el parámetro enableDebug a true en el código.
El generador de perfiles XSLT es una herramienta que permite a los desarrolladores de software medir, evaluar y solucionar los problemas relacionados con el rendimiento en el código XSLT mediante la creación de informes de rendimiento de XSLT detallados.
Errores de sintaxis XAML y XML
Cuando se detectan errores XAML, la superficie de diseño muestra una alerta de que el proyecto contiene marcado no válido.
A medida que resuelve los errores, la lista de errores del panel Resultados se actualiza.
Haz doble clic en el primer error de la lista.
La descripción es "El valor '<' no es válido en un atributo".
Al hacer doble clic en el error, el puntero busca la ubicación correspondiente en el código.
El < anterior Button es válido y no un atributo como se sugiere en el mensaje de error.
Si observa la línea de código anterior, observará que faltan las comillas de cierre del atributo Top.
Escriba las comillas de cierre.
Haga doble clic en la descripción "'0' no es válido al principio de un nombre".
Margin="0,149,0,0" parece estar bien formado.
Sin embargo, observe que la codificación de color de Margin no coincide con las otras instancias de Margin en el código.
Dado que faltan comillas de cierre del par nombre/valor anterior (VerticalAlignment="Top), Margin=" se lee como parte del valor del atributo anterior y 0 se lee como el principio de un par nombre-valor.
Escriba las comillas de cierre para Top.
Haga doble clic en el error restante: "La etiqueta XML de cierre 'Button' no coincide".
El puntero se encuentra en la etiqueta Grid de cierre (), lo que sugiere que el error está dentro del Grid objeto.
Tenga en cuenta que al segundo objeto Button le falta la etiqueta de cierre.
Después de agregar el cierre /, se actualiza la lista del panel Resultados.
Doble clic sobre "El miembro 'contenido' no se reconoce o no es accesible".
El c en content debería estar en mayúsculas.
"M" en "Mame" debe ser "N".
Reemplace "M" por "N".
Ejemplo de revisión de errores
- Abra el panel Resultados después de compilar.
- Haga doble clic en el primer error.
- Corrija las comillas que faltan en los atributos XML o XAML.
- Compruebe que cada etiqueta de apertura tenga una etiqueta de cierre válida.
- Revise las mayúsculas y minúsculas de los nombres de propiedades y miembros.
- Vuelva a compilar el proyecto.
- Ejecute la aplicación sin depurar cuando no queden errores de compilación.
Depurar XAML con Blend y Visual Studio
Puede abrir proyectos de Blend en Visual Studio para depurar más fácilmente el código en la aplicación.
Para abrir un proyecto blend en Visual Studio, haga clic con el botón derecho en el proyecto en el panel Proyectos y, a continuación, haga clic en Editar en Visual Studio.
Una vez finalizada la sesión de depuración en Visual Studio, presione Ctrl+Mayús+S para guardar todos los cambios y, a continuación, vuelva a Blend.
Se le pedirá que vuelva a cargar el proyecto.
Herramientas de depuración relacionadas
El primero es mover punto donde se está ejecutando.
Del lado izquierdo del editor, podemos encontrar una flecha de color amarillo, esta indica el lugar donde está detenida la ejecución.
Supongamos que tenemos un punto de interrupción en la primera línea, pero deseamos ejecutar hasta una en particular.
Podemos hacer es hacer clic en la línea y presionar Ctrl + F10 o presionar clic derecho y seleccionarlo del menú contextual Run to Cursor.
Otra caminos es por medio del marcador verde a la izquierda de la línea de código.
Podemos ir hasta una línea de ejecución sin la necesidad de ejecutar el código de en medio.
Nuevamente, si nos paramos sobre la línea, vemos el marcador verde del lado izquierdo.
Si presionamos el control, veremos que se pone de color amarillo, hacemos click e irá hasta la línea sin ejecutar el código intermedio.
Es por esta razón que al ver la ventana de seguimiento el objeto está como nulo.
Los puntos de interrupción no solamente se detienen porque los marquemos.
Podemos configurar un punto de interrupción configurando diferentes condiciones o cuando suceda un evento en particular.
Podemos configurar una propiedad de un objeto para que se detenga cuando ha cambiado.
En la imagen podemos ver cómo debemos hacerlo.
Configuramos que al cambiar ProductId del objeto producto se detenga.
Supongamos que necesitamos detener la ejecución cuando una propiedad tome un valor específico.
Para esto, sobre el marcador rojo del punto de interrupción, presionamos sobre el engranaje de configuración u seleccionamos Conditions.
Vemos que tenemos varios parámetros de configuración.
Completamos que se detenga cuando p, que está dentro de un bucle, en la propiedad Description sea igual a “Product 2”.
Esto hará que el bucle se ejecuta hasta que la condición sea la deseada.
Ahora, en lugar de detenernos, además, queremos ver todas las salidas del bucle.
Podemos usar Actions.
Nuevamente, sobre el punto de interrupción seleccionamos el engranaje y seleccionamos Actions.
Aquí podemos escribir un texto y luego entre { } el nombre de la variable u objeto que deseamos imprimir en la ventana de salida.
Muchas veces, ejecutamos un método que devuelve un valor, pero lo ignoramos o no lo asignamos a una variable.
Esto hace que no sea accesible en tiempo de ejecución o depuración.
El tiempo de depuración podemos verlo, si es necesario, desde la ventana autos.
Para acceder al valor debemos utilizar lo que se denomina pseudo-variable, en este caso $RetunValue.
Como vemos en la imagen, luego de ejecutar el método, escribimos en la ventana de inmediato $RetunValue y veremos el resultado.
Siempre que ejecutemos un método desde la ventana inmediato cambiamos el valor de alguna propiedad u objeto.
Como vemos en la imagen, cada vez que ejecutamos el método se actualiza el valor en la ventana de observación avisándonos que cambio el valor.
Referencias, ensamblados y código reutilizable
Muchas veces creamos librerías para reutilizar en nuestros proyectos.
Hacemos referencia en nuestro proyecto al ensamblado que tiene extensión dll.
Una vez que hicimos referencia, funcionara como una caja negra, donde no podemos ver la implementación.
Visual Studio nos da la posibilidad de poder hacerlo a pesar de que este compilado.
Con todo este set de funcionalidades y herramientas podemos hacer más simple la búsqueda de algún problema que tengamos en nuestra aplicación.
Fragmentos de código de IntelliSense
Este artículo le ayuda a solucionar problemas con fragmentos de código de IntelliSense.
El código XML del archivo de fragmento de código puede estar dañado.
Es posible que el archivo de fragmento de código no se ajuste al esquema del fragmento.
Es posible que falte una referencia de proyecto.
Examine la documentación del fragmento de código.
Si no se encuentra la referencia en el equipo, deberá instalarla.
La inserción de un fragmento de código debe agregar las referencias necesarias al proyecto.
Es posible que una variable no esté definida.
Las variables sin definir en un fragmento de código deben aparecer resaltadas.
Compilación automática y personalización
MSBuild proporciona compatibilidad con una amplia gama de escenarios de compilación personalizados.
La mayoría de las funcionalidades integradas se pueden invalidar o ampliar.
Quiere usar la versión de 64 bits de MSBuild y usa Visual Studio 2019 o versiones anteriores.
¿Quieres ejecutar una compilación en varios procesos?
Quieres modificar el sistema de compilación.
Realice un paso posterior al procesamiento.
Si va a desarrollar una herramienta de compilación, es posible que quiera invocar MSBuild mediante programación desde una aplicación .NET.
Mediante la API de MSBuild, puede controlar todos los aspectos de un sistema de compilación complejo.
MSBuild proporciona un paquete NuGet con una API completa (el espacio de nombres Microsoft.Build) que puede usar desde una aplicación .NET para estos fines.
Presenta propiedades y colecciones de propiedades.

ASP.NET Core - Ejecutar y Olvidar - Correr Código Asíncrono y no Esperarlo - Sin Librerías
tags: #visual #studio #xml #ejecutar #sin #depurar
Publicaciones populares:
- Objetivos y metas de la Ley de Aire Limpio en EE. UU.
- Filtrado del agua del grifo cuando es ácida: ¿vale la pena?
- Tecnologías UV en la desalinización de agua
- Cómo elegir filtros Solac para purificador con ionizador
- ¿Qué provoca las espumas en el vertido de una depuradora?
