Archivo de la etiqueta: Visual Studio

Posts relacionados con el entorno de desarrollo (IDE) de Visual Studio

Adiós Visual Studio 2019, adiós (¡ahí te quedas con tus marrones!)

Pues eso… actualmente utilizo el Visual Studio 2022 para los proyectos y anoche abrí uno que creé con el Visual Studio 2017 para .NET Framework, y vi que no me mostraba el contenido de los formularios, es decir, se mostraba como si no tuviesen controles dentro, así que… lo abrí el Visual Studio 2019 y… me mostró el aviso de que ya no tiene soporte (ver la captura) y que utilice el Visual Studio 2022… ¡ja! ¿Y qué hago con todos los proyectos que tengo para .NET Framework o para .NET 5?

Imagen 1. Visual Studio 2019 ya no tiene soporte

Así que… ¿qué hacemos con los proyectos creados para .NET Framework? (aparte de convertirlos para .NET 6.0 o posterior) o ¿qué hacemos con los proyectos para .NET 5 (y anteriores)? (aparte de convertirlos para .NET 6.0 o posterior)

Habrá que investigarlo… pero eso será en otra ocasión… que ahora tengo que empezar a currar… 😉

Nos vemos.
Guillermo

Lo que no me gusta de Visual Basic .NET (con Visual Studio)

Pues eso… a pesar de los pesares, hay algo bueno al crear los proyectos para Visual C# desde Visual Studio que en Visual Basic (por aquello de que debemos estar protegidos de tocar donde no se debe, o eso supongo). Es algo muy simple, que introdujeron (creo) en Visual Studio 2005 y es lo de que el método Sub Main sea autogenerado por el Visual Studio y no te permita crear uno propio… o al menos eso me ha pasado con Visual Studio 2022 Version 17.2.0 Preview 1.0 y al final he tenido que crear el proyecto con C# para poder poner lo que me dé la gana en el método Main. En fin…

Y es que, aunque haya definido mi propio método Sub Main, el Visual Studio me daba error de compilación de que ya estaba definido (o estaba definido más de una vez), no recuerdo bien qué me dijo… pero corté por lo sano, descarté el proyecto de Visual Basic y lo creé con C# (para .NET 6.0 y Windows Desktop).
Ese proyecto solo se encarga de llamar a otro que es el principal y por tanto, lo que necesitaba hacer es poder llamar al formulario adecuado para que se iniciara ahí la aplicación (el que tengo definido en otro proyecto diferente al de inicio).
Esto es para poder tener proyectos de inicio diferentes para cada «cliente» que quiera usar mi aplicación. Y en esos proyectos asignar los parámetros personalizados de cada cliente. Todo esto último, solo para aclarar. 😉

Buscaré en la documentación si hay alguna forma de «pasar» de esta automatización (que, seguro que la hay, desde el propio Visual Studio, ya que creando el proyecto desde la línea de comandos con dotnet seguro que se puede). Y si la hay ya te lo contaré.

Nota:
Antes de publicar esto, he probado a crear un proyecto con dotnet:
He creado el directorio con el nombre del proyecto, he cambiado a ese directorio y he escrito esto en la línea de comandos:
dotnet new winforms -lang VB -f net6.0
Y el proyecto se ha creado con el fichero Program.vb (con la definición de Sub Main) y un formulario Form1. Y ahora no dice nada el Visual Studio si lo cargo. Creo que el truco está en no crear los directorios ni asignaciones a My Project, etc.
Lo probaré desde Visual Studio a ver…

Nota 2:
Para solucionar esto en un proyecto creado desde Visual Studio.
He seguido estos pasos:
He comentado (también las puedes borrar) las secciones (cada una está dentro de <ItemGroup>) :
<Compile Update="My Project\Application.Designer.vb"> y
<None Update="My Project\Application.myapp">.

He comentado <MyType>WindowsForms</MyType> en el ItemGroup principal y de paso he eliminado la carpeta My Project. Y el fichero ApplicationEvents.vb.
Esto realmente es lo que da el problema de que haya dos Sub Main.

Y finalmente he creado un fichero Program.vb con el código «personalizado» para Sub Main.
En fin… complicaciones por intentar facilitar las cosas a los que preferimos Visual Basic.

Figura 1. Para quitar el error debes comentar MyType.

Nota 3:
Aunque los proyectos de C# creados con Visual Studio también tienen código autogenerado… por ejemplo: ApplicationConfiguration.Initialize.
Que lo que hace es lo que siempre (o casi) han hecho los métodos Main de las aplicaciones de Windows Forms:
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}

Y ya está… tenía que decirlo y lo he dicho 😉

Nos vemos.
Guillermo

Lo que estoy maquinando sobre expresiones lambda (métodos anónimos), programación asíncrona (tareas en otros hilos), cancelación de tareas, Parallel.For, consultas LINQ, DataGridView virtual y más, tanto para C# como para Visual Basic

Pues eso… ¡peasso de título! y seguramente se me olvidará algo, por eso he puesto al final «y más». Pero la idea que tengo en mente hoy 24 de febrero de 2022 (con la guerra de Ucrania fresquita, aunque es algo que, lamentablemente no es tan fresca y que ya viene de largo), es explicarte en una serie de posts o entradas en el blog todo lo indicado en el título.

Sobre las expresiones lambda o métodos anónimos, he pensado en ponerte un par de videos que Héctor de León publicó a principios del año pasado en su canal de YouTube (HDELEON.NET), pero como el código que él utiliza es para C# .NET, te mostraré también el equivalente para VB.NET así, si eres de los que utilizan C# lo puedas entender mejor. Todo esto contando con que él me autorice mostrar su código de C# y el equivalente (en la medida de lo posible) de Visual Basic para punto NET.
Actualización de las 17:33: Autorización que ya me ha dado 😉 ¡Gracias Héctor!

En cuanto a la programación asíncrona, te explicaré cómo crear tareas en otros hilos (principalmente con Task.Run) y el uso de async y await. Esas tareas se lanzarán o se procesarán también en el hilo principal de una aplicación de tipo Windows Forms (todo el código creado para .NET Core versiones 5 y/o 6) de forma que sepas qué cosas debes saber para el uso de controles, etc. entre hilos, cosa que solucionaré con InvokeRequired y la llamada a un delegado mediante Invoke. Por supuesto verás cómo definir delegados y cómo usarlos en el código.
Con todo esto verás cómo acceder a parte del código que se ejecuta en el hilo principal (el creado para mostrar el formulario de inicio) desde otro hilo (o tarea).

También verás cómo cancelar esas tareas y cómo controlarlas, todo ellos mediante el uso de objetos CancellationTokenSource y CancellationToken (tanto en su forma normal y anulable). Y lo que debes hacer para comprobar en el código cuando se ha cancelado y cómo tratar esa cancelación, algo que harás pasándole a la tarea (Task) el objeto de tipo CancellationToken.

Y como algunas de las tareas (ya sean asíncronas o no) puede que tenga que acceder a objetos de una colección, verás algunos casos de cómo usar Parallel.For para repartir en tareas el proceso de comprobación del contenido de esa colección.

La mayoría de las cosas que se hará en el código de ejemplo requerirá de las expresiones lambda (o métodos anónimos) y su uso en expresiones de LINQ. Ya sabes: Where, Any, Select, etc.

Por último, parte del código de ejemplo lo haré usando un control DataGridView y en ese caso te mostraré cómo crearlo para usar una caché con los datos que manejará y todo ello usando el modo virtual de ese control, de esa forma, al menos en mi caso, he logrado agilizar (sobre todo acelerar) mostrar los datos en ese grid (o cuadrícula). La caché usada estará preparada para el tipo de datos que voy a usar en ese ejemplo.

Todo esto, lo iré publicando poco a poco, entre otras cosas, porque lo estoy usando en una aplicación que utiliza datos o tipos muy concretos. Si te sirve de algo, es una aplicación que estoy migrando de MS-DOS a Windows, y la mayoría de los datos los obtiene de ficheros de texto… ¡Sí, así de vieja es! 🙂
Pero haré que el código acceda a colecciones de datos más simples, que en principio no se obtendrá de una base de datos, pero no descarto que también haga alguna modificación para acceder a una base de datos, y si es remota, mejor. Pero eso ya lo veré en su momento.

Bueno, te dejo por ahora y ya iré poniendo cosas… seguramente pondré los enlaces en este mismo post, pero si se me olvida hacerlo… pues… ¡busca en fechas posteriores al 24 de febrero de 2022! 😉

Y ya sabes… si me quieres invitar a un cafelillo o refresco virtual, puedes usar el enlace de DONAR con PayPal. Gracias de antemano.

Nos vemos.
Guillermo

Si instalas VS2022 y VS2019 deja de funcionar… (no carga todos los proyectos)

Pues eso… esto que te cuento ya lo publiqué en mi página de Facebook el pasado día 8 de noviembre (hoy es 23), pero «bicheando» en la WEB he visto que está expuesto este problema de forma más generalizada de lo que esperaba, y hasta gente de Microsoft han dicho que es bueno que esto se comparta para que haya menos gente que se encuentren con estos problemas (según parece esto lo han solucionado o lo van a solucionar en los instaladores de las nuevas versiones de Visual Studio 2022.

Como te comentaba en el post de Facebook, a mí el error que me dio fue: «The project file cannot be opened. Unable to locate the .NET SDK.«.

Esta es la entrada «ligada» al post en la página de Facebook de «elguille.info«:

 

 

Y aquí te lo dejo para que sepas cómo solucionarlo si te ocurre… Y si no te he ocurrido ¡chapó! 😉

Nos vemos.
Guillermo

Ahora entiendo mejor porqué ya no quieren seguir actualizando/avanzando Visual Basic

Pues eso… viendo las novedades de C# 10.0 me he topado con los detalles de la «novedad» Global using directives, dicho de esa forma parece algo «WOW!», y… es algo que siempre he querido que quitasen de forma predeterminada al crear un nuevo proyecto de Visual Basic para .NET: que haya importaciones implícitas de espacios de nombres al crear un nuevo proyecto.

Y eso es lo que es esa «nueva» característica de C# 10.0, crear definiciones «using» (ya que «Imports» es cosa de Visual Basic para .NET) de los espacios de nombres más habituales según el tipo de proyecto creado.

Que sí, que está muy bien, pero a mí nunca me ha gustado, de hecho, en la mayoría de los proyectos que creaba (sobre todo si era para compartirlo como parte de algún artículo), lo quitaba, con idea de así tener que escribir las importaciones de espacios de nombres en cada fichero (de código) de ese proyecto. Porque es la única forma de saber «a ciencia cierta» qué espacios de nombres se estaban usando en ese fichero de código.

Para que nos entendamos, a diferencia de C#, en Visual Basic el espacio de nombres System.Text nunca se importa de forma predeterminada, algo que sí ocurre en los proyectos de C#; por tanto, si quiero crear un nuevo objeto del tipo StringBuilder, o bien lo creo usando el nombre «completo» de la clase StringBuilder: System.Text.StringBuilder o bien declaro la importación del espacio de nombres System.Text y ya el compilador sabrá que StringBuilder está accesible (al revisar las clases contenidas en cada uno de los espacios de nombres que estén incluidos en las importaciones).

¡Eh! que no es una crítica, que me parece muy bien, y si ahora los del TEAM de C# lo están añadiendo como algo «predeterminado» será porque tampoco será tan malo, lo único que digo es que sigue siendo lo mismo que teníamos los «desarrollado-res» de Visual Basic desde hace ya casi 20 años… ¡NOVEDAD! WOW! 😉

Total, a lo que iba, que ya no hace falta seguir dando nuevas características a Visual Basic, porque al final C# será como era Visual Basic hace 20 años… eso sí, con (entre otras cosas) acabando la línea con un punto y coma.

Pero preferiría que Visual Basic evolucionara con las «nuevas características» realmente nuevas, para que a los que no nos gusta usar punto y coma para indicar que una instrucción ha finalizado o poner cosas entre llaves, etc., etc., y dejar de ver cómo C# evoluciona para hacer cosas que desde «siempre» ha hecho Visual Basic y, casi seguro, que era criticado por eso… Y si no me crees, échale un vistazo a las declaraciones sin tipos de variables (que, siempre al estilo de C#) en C# también lo añadieron en su día como novedad novedosa…

Nos vemos.
Guillermo

Edición ‘multi-caret selection’ en Visual Studio, pensaba que era un bug

Pues eso… yo pensaba que era un BUG de Visual Studio 2022 y me dicen que es «by design».

El tema era que al seleccionar con ALT+SHIFT (para seleccionar un bloque de código en las posiciones que quieras) se quedaban varios cursores activos y al escribir se escribía en todas las posiciones en las que estaba el cursor. Y dicen que eso no es un BUG (sí lo es en la forma que ha ocurrido, ya que en Visual Studio 2019 no ocurre de esa forma), y el enlace que me han dado es el siguiente: Multi-caret selection.

Este es el enlace al bug que les mandé: BUG VS2022: Selecting with ALT+SHIFT, releasing the selection, the blue and red cursor remains and if you type the text typed is set in several places.

Así que, si dicen que es «by-design», pues… lo será 😉

Nos vemos.
Guillermo

Solución al error en .NET MAUI: Error MSB4018 The «XamlCTask» task failed unexpectedly.

Pues eso… todo el rollo que te conté ayer… al final tenía una fácil solución o su solución era fácil. Y es no usar el idioma de Cervantes.

Ya te conté todo el rollo con las aplicaciones usando las plantillas de .NET MAUI con Visual Studio 2022, que al final no compilaban por el dichoso error: Error MSB4018 The «XamlCTask» task failed unexpectedly. Y no era por otra cosa que por usar caracteres acentuados (con tilde) en el diseñador de XAML.

En la otra aplicación que me funcionaba, seguramente «de casualidad» no tenía ese tipo de caracteres, y me estaba volviendo loco. Porque ya no sabía qué hacer.

Y hoy, leyendo otro «feedback» al querer postear el error, era porque alguien quería usar un «dibujito» en el XAML y resulta que le daba error… y la solución era usar el código que corresponde a ese dibujo para así mostrarlo.

Yo lo he solucionado poniendo en el código el texto a mostrar.

Y lo que quería hacer era un ejemplo en el que se escribe un número en una caja de texto, se pulsa en un botón y se muestra el número escrito. Este ejemplo tan «simplón» es solo para demostrar a esta gente de Visual Studio / .NET MAUI que el control Entry falla y que solo admite el texto que se asigne, ya sea en tiempo de diseño o en tiempo de ejecución, pero que si escribes algo, ese valor no se tiene en cuenta, solo se usa el inicialmente asignado.

En la captura 1 puedes ver el proyecto en ejecución en el proyecto para Windows (UWP), y ahí te muestro que a pesar de haber escrito otro número distinto al asignado inicialmente (5) en la etiqueta no muestra el que se haya escrito.

Captura 1. La aplicación para .NET MAUI en funcionamiento.

Pues ya lo sabes (y espero yo saberlo también) 😉

Nos vemos.
Guillermo

Solucionando problemas con los proyectos de .NET MAUI en Visual Studio 2022 (o casi)

Pues eso… seguimos con los «problemitas» de Visual Studio 2022 y .NET MAUI. Después del fallo que te comenté anoche, me puso en la labor de crear un nuevo proyecto de .NET MAUI en Visual Studio 2022, con idea de comentar otro de los fallos con los que me encontré y es que en los controles Entry no se cambia el valor que hayas asignado (en diseño o por código).

Creé un nuevo proyecto de .NET MAUI, pero… nada de nada… el error que me mostraba (después de varios «cleanings» y «rebuilds» era que: XamlCTask «nosequénosecuántos» y ahí se quedaba.

Esto ya me pasó otra vez, lo solucioné (pero no recordaba como lo hice), por eso estoy escribiendo esto… por si lo soluciono lo tendré a mano 😉

Lo que ahora estoy haciendo (o el Windows 11 está haciendo) es esto:

Paso 1: Ejecutar maui-check.

En la línea de comandos (yo he abierto el terminal de Windows 11) escribe:
maui-check.

Esto comprueba si el «.NET MAUI» está correctamente instalado.

Nota:
Si esa utilidad no la tienes instalada… pues… tendrás que instalarlo, tal como te dije hace unos meses.

dotnet tool install -g redth.net.maui.check

Paso 2: Descargar e instalar todo lo que necesita .NET MAUI.

Escribe en la línea de comandos o la terminal de Windows 11:
dotnet workload install maui

Esto descargará e instalará lo que necesite tu equipo.

Ver la captura 1 con los dos comandos comentados.

Captura 1. El terminal de Windows 11 con los dos comandos.
Captura 1. El terminal de Windows 11 con los dos comandos.

Aunque esto no soluciona el error ese de Error MSB4018 The «XamlCTask» task failed unexpectedly. 🙁

Paso 3: Crear un nuevo proyecto.

Yo lo he creado desde la línea de comandos:
dotnet new maui -n MauiApp3
MauiApp3 es el nombre del proyecto que le he dado.

Pero también lo puedes crear desde el propio Visual Studio 2022.

En nuevo proyecto escribe MAUI en la búsqueda y pulsa INTRO y te mostrará los proyectos de .NET MAUI. Selecciona el primero tal como te muestro en la captura 2.

Captura 2. Nuevo proyecto de .NET MAUI.
Captura 2. Nuevo proyecto de .NET MAUI.

Paso 4: Editar el proyecto en Visual Studio 2022 e indicar que admita aplicaciones de Windows.

Lo abro con Visual Studio 2022, (o lo creo, tal como te he indicado en el paso anterior), edito el fichero del proyecto (en el explorador de soluciones pulsa con el botón secundario en el proyecto y selecciona Edit Project File) y quito el comentario en la línea:

<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) and '$(MSBuildRuntimeType)' == 'Full'">$(TargetFrameworks);net6.0-windows10.0.19041</TargetFrameworks>

En el valor TargetFrameworks que está justo encima de esa línea con los «frameworks» incluidos en el proyecto: net6.0-ios;net6.0-android;net6.0-maccatalyst.

Si ahora ejecutas el proyecto te dará error, ya que el «framework» que usará será el primero de la lista: net6.0-ios. Aunque arriba esté indicado que será en Windows Machine.

Para solucionarlo, debes cambiar el target framework indicado en la aplicación de Windows y seleccionar el de Windows (ver la captura 3):

Captura 3. Indicar el framework para las aplicaciones de Windows.
Captura 3. Indicar el framework para las aplicaciones de Windows.

Abajo, en la lista de errores más o menos te da pistas.

Y si después de eso (y tienes suerte) al pulsar F5 debería mostrarte la aplicación de ejemplo (ver la captura 4).

Captura 4, la aplicación de ejemplo en funcionamiento.
Captura 4, la aplicación de ejemplo en funcionamiento.

Nota interna pal Guille:
El proyecto que funciona (sin añadir código propio) es: MauiApp2 y MauiApp3 que están en «C / source / repos».

Una cosa a tener en cuenta:

Si pruebas con Android (emulador o dispositivo), y supongo que para iOS también, el framework se asignará correctamente, pero si vuelves a querer usar la aplicación en Windows, tendrás que volver a indicar el net6.0-windows10.0.19041.

Ahora no se te ocurra añadir tu propio código… jajaja porque es cuando empieza el espectáculo del error ese que te dije antes en el paso 2: Error MSB4018 The «XamlCTask» task failed unexpectedly.

A ver si consigo solucionarlo, porque ni haciendo todo lo anterior me ha funcionado.

Porque funcionar (aunque regulín-regulán) me ha funcionado, pero ya no recuerdo qué hice. A ver si doy con lo que fue… y te voy contando, porque ya son cerca de las 4 de la tarde del nuevo horario y hay hambre 😉

*** Seguimos

A ver… creo que era lo que comentaban en este «reporte de error»: VS 2022 MAUI project templates missing.

Ejecutando este código: dotnet new -i Microsoft.Maui.Templates indica que está todo instalado (otra cosa es que añadas una nueva página al proyecto, en ese caso, como es Xamarin.Forms te dará errores por todos lados, pero básicamente es cambiar las definiciones de los «usings» y cambiar los xmlns del diseñador).

En mi caso, al ejecutar ese código (ver la captura 5) dice que está todo instalado (y que ya lo estaba).

Captura 5. Instalar los templates de .NET MAUI.
Captura 5. Instalar los templates de .NET MAUI.

*** Seguimos (2)…

Yo qué sé… tengo un proyecto que funciona (mal, pero funciona con mi propio código), pero no consigo que los nuevos proyectos tengan el código que yo quiera (que de eso se trata, ¿no?).

Bueno, ahora sí, si lo soluciono, y sé/recuerdo cómo lo he solucionado, lo pondré aquí o en un post nuevo…

Solo me queda añadir una nueva página y ahí escribir el nuevo código…

Actualizado el 1 de noviembre de 2021.

Pues resulta que he conseguido crear un nuevo proyecto desde el propio Visual Studio 2022, añadirle código propio y hacer que funcione, y de paso comprobar que eso de los controles Entry falla.

Pero solo he tenido 3 oportunidades, desde la cuarta, ya no funciona… vuelve a salir el error de: The «XamlCTask» task failed unexpectedly.

Y ya… pues casi que lo dejo, hasta ver si es casualidad o es que se puede hacer algo para solucionar ese «dichoso» error.

Lo mandaré a esta gente a ver qué dicen… seguro que a ellos nunca les pasa 😉

¡¡¡Resulta que todo el problema eran las «tildes»!!!

Pues eso… he quitado una tilde que tenía en «número» y ahora funciona bien… jajajaja, como se suele decir: ¡pa mearse y no echar gota!

Es decir, el error de The «XamlCTask» task failed unexpectedly es porque hay caracteres «no normales».

Nos vemos.
Guillermo

.NET MAUI aún está muy verde (comparado con Xamarin.Forms)

Pues eso… por fin he logrado hacer algo medianamente útil con .NET MAUI y Visual Studio 2022 (acceso a datos, para ser más concreto) y… pues que en la aplicación de Windows (UWP) funciona bien, pero en la de Android ni de coña… Y ya con la de iOS ni te digo… es que ni siquiera compila… en fin…

La de Android se inicia, pero cuando digo de acceder a una base de datos, da error.

Seguramente será por el «idioma» (codificación). Ya que en las aplicaciones de Xamarin.Forms para que pueda acceder a las bases de datos de SQL Server le tengo que decir (a iOS también) que use la codificación WEST y entonces si funciona (ver la captura 1), pero no tengo ni repajolera idea de cómo hacerlo en .NET MAUI. 🙁

Captura 1. La opción en Xamarin.Forms para indicar que use la codificación oeste (west)
Captura 1. La opción en Xamarin.Forms para indicar que use la codificación oeste (west)

De todas formas, aunque funcione en Windows (me vale para las pruebas), hay cosas tan simples como que un Entry (el típico TextBox de .NET Framework, o casi) no permita que se cambie el contenido… Bueno, permitir, lo permite, pero como si le echaras un vaso de agua al mar para que aumente de nivel… Es decir, que no vale pa ná

En fin… y el día 8 de noviembre quieren lanzar el Visual Studio 2022… ¡que lo lancen! pero bien lejos… porque falla más que una escopetilla de plomos…

Eso sí, uno le dice a esta gente que fallos va encontrando, pero… ¡a ellos no les falla!… jajajaja me rio yo solo… por no llorar…

De hecho, con un bug «tonto» de seleccionar código con las teclas ALT+SHIFT (suelo hacerlo bastante cuando quiero copiar el código para colorearlo y publicarlo en este blog, por ejemplo).

Pues no hay forma de que esta gente sigan los mismos pasos que ya les he indicado varias veces, ellos lo hacen a su manera, y de esa forma no falla… pero no es lo mismo. Ya que, si yo quiero seleccionar algo que está indentado, en Visual Studio 2022 falla, sin embargo, en Visual Studio 2019 va bien.

Si tienes curiosidad, puede ver el «feedback» que yo lo titulé (en inglés para que no se pierdan mucho): BUG: Selecting block of text with SHIFT+ALT (+ Down, Left keys) moves the selection start down (not always).

Y algunos más… que, hasta pueden resultar graciosos, como el que al seleccionar el texto de esta forma se quedan varios cursores y si escribes algo se pone ese texto en todos los cursores que haya (uno por cada línea seleccionada).

Este es el enlace (y el título): BUG VS2022: Selecting with ALT+SHIFT, releasing the selection, the blue and red cursor remains and if you type the text typed is set in several places.

Bueno… no te canso más… aunque, si vives por estos lares… esta noche podrás dormir una hora más… que nos cambian el horario de verano al de invierno y… a las 3 de la madrugada serán las 2… 😉

Buenas noches.

Nos vemos.
Guillermo

Charla con Héctor de León: ¿Está Comenzando a Morir Visual Basic?

Pues eso… ayer día 30 de agosto estuve charlando con Héctor de León (del canal de YouTube hdeleon.net) y ya está publicada y aquí te dejo el enlace.

¿Está Comenzando a Morir Visual Basic? | Invitado: Guillermo Som del elguillemola.com

 

Espero que te resulte interesante.

 

Nos vemos.
Guillermo