Visual Studio 16.8 incluye el Diseñador de formularios de Windows, por lo que Visual Basic está listo para que migre las aplicaciones existentes o cree nuevas aplicaciones. Como lo son las WinForms.

Mientras que .NET Core ha tenido Visual Basic desde el primer lanzamiento, y WinForms desde que fue lanzado en .NET Core 3.1, no incluyó la biblioteca Application Framework y el soporte WinForms Designer que los programadores de Visual Basic esperan. NET 5 es la próxima versión de .NET Core y creemos que está lista para migrar las aplicaciones existentes de .NET Framework o crear nuevas aplicaciones WinForms.

Estamos entusiasmados con las actualizaciones de Visual Basic en .NET 5, pero primero un recordatorio de que puede basar su decisión de migrar a .NET 5 en si quiere o no sus nuevas características y cómo necesita interoperar con las aplicaciones de .NET 5. El .NET Framework será soportado como parte de Windows durante mucho tiempo. No se agregarán nuevas características a .NET Framework. Las nuevas características, incluyendo las nuevas características de WinForms, se añadirán sólo a .NET 5 y a las futuras versiones.

Visual Studio 16.8 and .NET 5 include the following updates for WinForms development in .NET 5:

  • Compatibilidad de Designer Event Handling: Los eventos de Visual Basic se conectan con una palabra clave de Manipulación en el código del método. Esto presentó importantes desafíos al diseñador de WinForms y no funcionó correctamente en .NET Core 3.1. Esto ha sido arreglado.
  • Marco de aplicaciones: El VisualBasic Application Framework proporciona un inicio basado en eventos, lo que significa que no se necesita un Sub Main para las aplicaciones WinForms. Una nueva versión del Framework de Aplicación está disponible en .NET 5.
  • Aplicaciones de instancia única: NET 5 introduce las aplicaciones de instancia única en la familia Core de .NET. La nueva versión también tiene una lógica actualizada que debería funcionar bien en más escenarios.
  • Actualizaciones de los diálogos de Visual Studio: Se han hecho actualizaciones a algunos diálogos para apoyar las características de Visual Basic en el nuevo formato de proyecto. Este trabajo está en curso.
  • Plantilla de WinForms de Visual Basic: Hemos esperado a añadir la plantilla a Visual Studio hasta que se puedan crear aplicaciones WinForms con el Application Framework. Esta nueva plantilla es la predeterminada en Visual Studio, y está disponible a través de un interruptor en dotnet nuevo en el CLI .NET.
  • Características adicionales de Visual Basic Runtime: Las últimas versiones de .NET Core han portado características del Visual Basic Runtime. Creemos que este trabajo está completo y que las características faltantes no pueden funcionar de la misma manera en .NET 5.

Creación de aplicaciones WinForms del marco de aplicaciones de .NET 5 en Visual Studio
Encontrarás la nueva plantilla .NET 5 en el diálogo Crear nuevo proyecto. El nombre ha sido actualizado para las plantillas, y encontrarás que los nombres de las plantillas de .NET Framework incluyen «Framework» y las plantillas que simplemente indican .NET son para .NET 5.

Muchos aspectos del comportamiento de una aplicación de WinForms Application Framework se controlan a través de los ajustes en el Diseñador de Propiedades del Proyecto, que se muestra al seleccionar Propiedades en el menú contextual de un Proyecto VB en el Explorador de Soluciones:

Marco de objetivos: El Visual Basic Application Framework no es compatible con el .NET Core 3.1 o versiones anteriores del .NET Core. Como resultado, si cambias el Target Framework en el Diseñador de Aplicaciones a .NET Core 3.1, un proyecto basado en el Application Framework ya no se compilará. (Ver también las secciones «Creación de aplicaciones .NET Core 3.1 o .NET 5 en la línea de comandos» y «Problemas conocidos»).

Habilitar el Framework de Aplicación: El Framework de Aplicación está habilitado por defecto. Cuando está habilitado, proporciona una configuración fácil con un solo clic y un acceso simplificado a los eventos codificados de la aplicación (ver más abajo).

Habilita los estilos visuales de XP: Esta opción habilita la representación temática de los controles controlada por el sistema operativo, que se introdujo por primera vez en Windows XP y mantuvo el nombre en adelante.

Hacer una aplicación de una sola instancia: Si se hace clic en esta opción, el marco de aplicación asegura, que una aplicación WinForms sólo se inicia una vez. (Sugerencia: Si no se utiliza esta opción, el evento de aplicación StartUpNextInstance permite controlar si se puede iniciar otra instancia de la aplicación WinForms).

Guardar mi configuración al apagar: Guarda automáticamente las propiedades de la configuración cuando se cierra la aplicación WinForms. Ten en cuenta que la función de configuración aún no está completamente implementada en el nuevo WinForms Designer para Visual Basic.

Modo de autenticación: Esta opción controla si la propiedad de usuario refleja el usuario de Windows a través de mi espacio de nombres, o si desea implementar la gestión de usuarios usted mismo. Tenga en cuenta que esto no provoca que se muestre ningún cuadro de diálogo de inicio de sesión u otro tipo de autenticación, sino que se refiere exclusivamente al funcionamiento de la propiedad de usuario en Mi espacio de nombres.

Pantalla de inicio: Le permite elegir un formulario de pantalla de bienvenida, que se muestra automáticamente, cuando se inicia la aplicación WinForms.

Diferencias con el .NET Framework
NET 5 está en la familia de .NET Core y tiene diferencias en las APIs y bibliotecas que están disponibles, el Sistema de Proyectos y cómo se implementan las aplicaciones. Echa un vistazo a esta entrada de blog para portar aplicaciones a .NET Core.

En general, su experiencia en Visual Studio será similar para .NET 5 y .NET Framework. Una diferencia es la forma en que se conectan los eventos de Application Framework para el inicio, la detección de cambios en la disponibilidad de la red, el cierre y la notificación de excepciones no manejadas. Un archivo ApplicationEvents.vb vacío para contener estos eventos es creado por la plantilla WinForms en .NET 5, mientras que en .NET Framework el archivo no se crea hasta que el desarrollador hace clic en el botón View Application Events. Como resultado, el procedimiento para cablear eventos de aplicaciones en su aplicación es:

  1. Cambie al archivo de código ApplicationEvents.vb en el editor de código.
  2. En la vista desplegable del medio en el editor de código, elija (MyApplication Events).
  3. En la vista desplegable de la derecha del editor de código, elige el evento de aplicación que quieres transferir.
  4. Esto creará el manejador donde puedes añadir tu código.

Nuevo evento de marco de aplicación ApplyHighDpiMode

Comenzando con .NET 5, el Marco de Aplicación provee un nuevo evento de aplicación llamado ApplyHighDpiMode. El valor por defecto es SystemAware que proporciona la misma representación nítida de alta ppp en tiempo de diseño y en tiempo de ejecución.

Si quieres iniciar tu aplicación WinForms con una configuración diferente de high dpi, puedes hacerlo fácilmente manejando el evento de aplicación ApplyHighDpiMode:

  • Abre el archivo de código ApplicationEvent.vb en el editor.
  • En la lista desplegable del medio, elige Eventos de MiAplicación.
  • En la lista de eventos de la derecha (ver captura de pantalla), elige ApplyHighDpiMode para insertar el talón del manejador de eventos.
  • Añade el siguiente código (el ejemplo lo estableció en PerMonitorV2):
Partial Friend Class MyApplication
    Private Sub MyApplication_ApplyHighDpiMode(
        sender As Object, e As ApplyHighDpiModeEventArgs) Handles Me.ApplyHighDpiMode
            e.HighDpiMode = HighDpiMode.PerMonitorV2
    End Sub
End Class

El modo DPI alto establecido en el evento ApplyHighDpiMode no puede cambiarse después de que se haya mostrado la primera Forma, y debe establecerse sólo una vez.

Creando aplicaciones VB WinForms de .NET Core 3.1 o .NET 5 con el CLI
Aunque recomendamos encarecidamente Visual Studio y su WinForms Designer, también puede crear aplicaciones fuera de Visual Studio, utilizando el CLI .NET. Necesitas el SDK de .NET 5, que se instala con Visual Studio, o puedes descargarlo aquí.

Cuando se crea una aplicación WinForms de Visual Basic en la línea de comandos, el Application Framework NO se utiliza de forma predeterminada y se puede seleccionar el .NET Core 3.1 o el .NET 5. Como la infraestructura de Application Framework fue agregada al tiempo de ejecución en .NET 5, no se pueden crear aplicaciones de Application Framework dirigidas a .NET Core 3.1.

Con el CLI, creas una nueva aplicación de Visual Basic Forms con el comando dotnet new:

dotnet new winforms -o outputDirectoryName --language VB

Con las opciones de la línea de comandos se controla cómo se debe crear el proyecto:

-salida de salidaDirectoryName : Determinamos el nombre del proyecto VB WinForms. Una subcarpeta con este nombre se crea automáticamente.

-idioma vb: Determinamos que se crea un proyecto de Visual Basic WinForms. Si se omite la opción -language, se crea un proyecto C#. Si desea que dotnet new sea el valor por defecto de Visual Basic, establezca la variable de entorno DOTNET_NEW_PREFERRED_LANG=VB.

Por defecto, dotnet new genera un proyecto .NET Core 5.0 WinForms sin el Framework de aplicación, similar a como funciona un proyecto C# WinForms. La aplicación se inicia con un método Sub Main en el módulo llamado Program.vb que maneja toda la configuración necesaria:

Friend Module Program
  ' Start and set HighDpiMode, Styles and TextRenderingDefault.
   <STAThread()>
   Friend Sub Main(args As String())
      Application.SetHighDpiMode(HighDpiMode.SystemAware)
      Application.EnableVisualStyles()
      Application.SetCompatibleTextRenderingDefault(False)
      Application.Run(New Form1)
   End Sub
End Module

Si desean crear un proyecto WinForms VB .NET 5 con soporte de Application Framework desde la línea de comandos, entonces debe utilizar estas opciones adicionales:

dotnet new winforms -o VbForms5AF --language VB --framework net5.0 --use-app-framework

-Framework: Determina la versión .NET con la que se crea la aplicación WinForms. Los monikers del marco de destino son

  • netcoreapp3.1 para aplicaciones .Net Core 3.1
  • net5.0-windows for .NET 5 Apps

usar-app-framework: Cuando esta opción está presente (sólo posible a partir de .NET 5.0), se crea una aplicación WinForms de Visual Basic basada en el Application Framework. Los archivos de proyecto resultantes son los mismos que los creados utilizando la plantilla VB .NET 5.0 WinForms de Visual Studio.

Cambios en el formato de los archivos de proyecto
Las aplicaciones .NET Core y .NET 5 utilizan un nuevo formato de archivo de proyecto (.vbproj). El nuevo formato está diseñado para ser leído y comprendido por los humanos así como por MSBuild. Los archivos ya no se enumeran explícitamente. En su lugar, todos los archivos de la carpeta donde se guarda el archivo .vbproj y cualquier subcarpeta son implícitamente parte del proyecto. Esto se llama «globbing». En este archivo también verás las importaciones a nivel de proyecto, la referencia del proyecto y del paquete y la configuración de las opciones.

El nuevo archivo de proyecto tiene el siguiente aspecto:

Los archivos de proyecto de Visual Basic comienzan con la etiqueta . Para las aplicaciones WinForms esta etiqueta tiene que ser…

  • Microsoft.NET.Sdk para aplicaciones .NET 5 (y versiones superiores) y
  • Microsoft.NET.WindowsDesktop para aplicaciones .NET Core 3.1.

Para cambiar el Target Framework en una aplicación WinForms (ya sea Visual Basic, C# o F#), cambie la configuración del Target Framework editando el archivo del proyecto.

Importante: El Diseñador de Propiedades del Proyecto no soporta actualmente el cambio entre .NET 5 y .NET Core 3.1. Y si lo cambian allí sin querer, puede que su proyecto no se compile. Cambia el Target Framework manualmente en el archivo .vbproj al que necesites.

Cambia la etiqueta de TargetFramework a…

  • netcoreapp3.1 para aplicaciones .NET 3.1. Por favor, ten en cuenta que las aplicaciones 3.1 no son compatibles con el Visual Basic Application Framework.
  • net5.0-windows para aplicaciones .NET 5.0.

Problemas conocidos
En Visual Studio 16.8, el WinForms Designer todavía tiene algunas características que faltan. Además, el sistema de proyectos, que gestiona el Diálogo de Proyectos, no es totalmente compatible con el Marco de Aplicaciones.

Selección de la forma de inicio en una aplicación de Framework de aplicación .NET 5.0
En el Diseñador de Propiedades del Proyecto, la selección del Objeto de Inicio no es actualmente funcional. Para solucionar este problema:

  • Para cambiar la configuración predeterminada a una forma diferente, asegúrese de que el explorador de soluciones muestra todos los archivos. Si es necesario, cambie esta configuración en la barra de herramientas del Explorador de soluciones: Encontrar el archivo application.myapp en el Explorador de soluciones.
  • Expanda la rama Mi Proyecto en la solución Explorador.
  • Haga clic en Application.myapp para mostrarlo en el editor de código. Ahora, cambie el parámetro a Form, con el que quiere que se inicie la aplicación WinForms.
  • Guarda el archivo, para iniciar la generación de código, que establece el Formulario seleccionado como el nuevo formulario de inicio.

Reportando errores y sugiriendo características
¿Tiene algún comentario, sugerencia o ha encontrado algún error? Por favor, envíe los problemas a través de Visual Studio Feedback o como problemas en el repositorio WinForms GitHub. WinForms es de código abierto y desarrollado en abierto. Visita https://github.com/dotnet/, y comprométete! Feliz programación!

Shares