Aspnetcore: Compatibilidad con Visual Basic .NET (VB.NET) en ASP.NET Core

Creado en 3 ene. 2018  ·  91Comentarios  ·  Fuente: dotnet/aspnetcore

Se han formulado muchas preguntas sobre la compatibilidad con VB.NET en ASP.NET Core durante los últimos años. Si los sigue, todos conducen a callejones sin salida, ya sea cerrados sin una respuesta real, o se mueven a otros repositorios que no están relacionados con ASP.NET Core (como en algún lugar de la organización dotnet ).

Durante ese tiempo, se ha hablado de apoyar a VB. Es completamente comprensible que ASP.NET Core no fuera compatible con VB desde el principio. El proyecto estaba experimentando muchos cambios rápidos, por lo que tenía sentido centrarse en C # inicialmente y agregar soporte para otros lenguajes más adelante. Pero la idea de apoyar a VB pareció perderse en el camino.

Aquí hay una breve cronología:

16 de diciembre de 2014:

Planeamos tener puntos de extensibilidad para que otros lenguajes como VB, F #, etc. se puedan agregar a través de un paquete de soporte o similar.
https://github.com/aspnet/Home/issues/236#issuecomment -67046039

25 de abril de 2015:

Hola a todos, ¡buenas noticias! ¡Hemos anunciado planes para admitir VB en ASP.NET 5 / DNX!
https://github.com/aspnet/Home/issues/236#issuecomment -96003847

Hoy nos complace anunciar que ASP.NET 5 tendrá soporte completo con Visual Basic (tanto herramientas como tiempo de ejecución, incluido el soporte de tiempo de ejecución multiplataforma).
https://blogs.msdn.microsoft.com/webdev/2015/04/24/making-it-better-asp-net-with-visual-basic-14/

19 de noviembre de 2016:
VB Support desaparece de la hoja de ruta:

 |1.0.4|Feb 2017|
 |1.2|Q2 2017|

-## Future Work
-
-Visual Basic support.
-
 <em><sup>*</sup> References to yearly quarters (Q1, Q2, Q3, Q4) are calendar-based</em>

https://github.com/aspnet/Home/wiki/Roadmap/_compare/2138fe4ff8a437e8edefc333189aaa8d9b5afb6a...b49bda1f8f40975b39d14d199a9ddac0a2beb45e

12 de diciembre de 2017:

no hay planes para agregar una plantilla VB para ASP.NET Core
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

El soporte de VB parece haber pasado de

"Todavía no funciona, pero planeamos permitir VB"

a

"¡Habrá soporte completo para VB!"

a

"VB no es compatible, pero shhh, no se lo digas a nadie".

Entonces mi primera pregunta es:

¿Qué sucedió y por qué no hubo ningún anuncio o discusión con la comunidad sobre esto?

Parece extraño pasar de anunciar el soporte para VB.NET en ASP.NET Core en una publicación de blog oficial, a no admitirlo en absoluto sin ningún comentario. ¿Hubo algún anuncio sobre esto? Si lo hubo, ciertamente no se publicó ampliamente.

Mi siguiente pregunta, y la más importante, es:

¿Qué puede hacer la comunidad de VB para ayudar a agregar soporte para VB.NET a ASP.NET Core?

¿Hay plantillas de proyectos que podamos escribir?
¿Hay generadores de código que podamos implementar?
¿Qué podemos hacer para que ASP.NET Core sea tan impresionante para los desarrolladores de VB como para los desarrolladores de C #?


He reunido una aplicación ASP.NET Core simple (enlace eliminado porque el repositorio está desactualizado) en VB creando una aplicación de consola .NET Core, editando el archivo del proyecto y copiando las clases generadas desde ASP.NET Core C # modelo. Funciona bien, y aunque es muy básico, no veo ninguna razón por la que VB.NET no sea compatible.

Comentario más útil

+1
Visual Basic siempre es el lenguaje más importante del mundo .NET. ¡VB todavía tiene muchos fanáticos y lo usa hoy! Aunque muchas personas trabajan en proyectos C # en su lugar de trabajo, creo que a muchas personas como yo les encanta usar VB en su propio proyecto.

Todos 91 comentarios

cc @DamianEdwards

Registré un problema hace mucho tiempo para usar VB junto con .cshtml en el repositorio de Razor , desde entonces no vi ninguna acción 😟.
Hace unas semanas vi un gran ejemplo de @DamianEdwards que demuestra una aplicación híbrida VB ASP.NET Core aquí

Además de @reduckted excelente resumen, la documentación de Microsoft para la sintaxis de Razor para ASP.NET Core (como en 2017-10-18) todavía tiene numerosas referencias a Visual Basic y al uso de archivos .vbhtml:

Esta restricción no se aplica a los archivos .vbhtml Razor porque la sintaxis de Visual Basic coloca paréntesis alrededor de los parámetros de tipo genérico en lugar de corchetes.

Sin embargo, ScottAddie @ MSFT había publicado un comentario el 21-07-2017:

ASP.NET Core aún no es compatible con VB.NET. Tendrá que seguir con ASP.NET adecuado por ahora.

Entonces, ¿los archivos Visual Basic / vb.net / .vbhtml se incluirán en .Net Core? ¿Y si es así cuando?

¿Cómo podemos ayudar a que suceda este apoyo? ¡Me encantaría ver el soporte de VB.Net y F #!

Envié un PR para eliminar las referencias VBHTML de los documentos de ASP.NET Core: https://github.com/aspnet/Docs/pull/5201

Actualmente no hay planes para introducir compatibilidad con VBHTML en ASP.NET Core.

Tenemos plantillas de F # para ASP.NET Core, que se instalan como parte del SDK de .NET Core.

@Eilon Actualmente no hay planes para introducir compatibilidad con VBHTML en ASP.NET Core.

Personalmente, no me preocupa la compatibilidad con VBHTML porque no uso páginas de Razor y no tengo la intención de hacerlo. Como lo mencionó @AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626), no tiene sentido agregarle soporte VB porque rara vez se usó en MVC 5, y, Me imagino que tomaría una gran cantidad de trabajo por no mucha ganancia.

@Eilon Tenemos plantillas F # para ASP.NET Core, que se instalan como parte del SDK de .NET Core.

Está bien, pero no estoy muy seguro de cuál es tu punto aquí. En todo caso, ¿no refuerza esto el hecho de que _debería_ haber también plantillas de VB?

¿No fueron las plantillas de F # creadas por la comunidad de F #? Si el equipo de Microsoft no crea plantillas de VB, ¿por qué la comunidad de VB no puede crear las plantillas de VB?

@reduckted la pregunta se reduce a la demanda y el costo de la misma, tanto el costo inicial como el costo continuo. La demanda ha sido muy baja, como se señaló anteriormente. El costo de crear un conjunto inicial de plantillas puede que no sea mucho, pero alguien tiene que mantenerlas. Con F # tenemos personas en Microsoft que están comprometidas con su mantenimiento. No tenemos a ninguna de esas personas para VB en este momento.

Además, una limitación de las plantillas de F # es que se centran más en el lado de la API; es decir, sin Razor o CSHTML (porque no hay FSHTML). Con los usuarios de VB, mi suposición es que la mayoría de los usuarios que usan VB esperarían una experiencia VBHTML para MVC, y el costo de producción es enorme: meses y meses de trabajo. Por lo tanto, no me queda claro si agregar plantillas VB limitadas sería particularmente valioso.

@Eilon Con los usuarios de VB, creo que la mayoría de los usuarios que usan VB esperarían una experiencia VBHTML para MVC ...

Es posible que desee hablar con @AnthonyDGreen , porque eso es exactamente lo contrario de lo que ha dicho en el comentario al que me vinculé anteriormente (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626). Lo citaré esta vez (el énfasis es mío):

El motor de afeitar .vbhtml de MVC 5 no se transfirió a Core principalmente porque menos del 1% de todos los proyectos web de VB lo usaron después de 5 versiones.

@reduckted - interesante, eso es una novedad para mí. Estoy pensando en los días de Web Forms, que inicialmente se diseñó con conceptos que eran familiares para los desarrolladores de VB (VB6, específicamente), y Web Forms estaba muy centrado en HTML (sorta), por lo que me llevó a pensar que VBHTML sería más interesante para ese grupo de personas. Por otra parte, eso es ~ datos anec de 15 años 😄

Por cierto, para ser claros, no hemos dicho que nunca lo haremos, solo que actualmente no está en ningún plan.

Soy un fan de VB 😄, y espero que .vbhtml esté listo para usar, el enfoque híbrido que mencioné antes no es suficiente para todos los chicos de VB, pero está bien en algunos casos. Mi pregunta es volver a implementar el Razor para emitir VB en lugar de C #, ¿funcionará o el MVC está estrechamente acoplado en el cshtml C #?

@hishamco Desafortunadamente, Razor se implementó para que VB y C # fueran caminos separados. He hablado con algunas personas involucradas y es un proyecto bastante grande.

@KathleenDollard Hay otros proyectos .NET Core que admiten ViewEngines personalizados para los tipos de archivo .pug y .md .

Seguramente podemos hacer que funcione para archivos .vbhtml razorpages usando un .vbproj con <Project Sdk="Microsoft.NET.Sdk.Web"> .

@ tb-mtg Todo es de código abierto si quieres explorarlo y ver qué hicieron esos proyectos. Las personas que lo escribieron me dijeron que fue un gran esfuerzo. El tamaño del esfuerzo y la adopción extremadamente baja de vbhtml en versiones anteriores de MVC hacen que sea difícil de vender.

@KathleenDollard Volveré a repetir mi pregunta, si vuelvo a implementar Razor para emitir VB en lugar de C #, ¿funcionará o el MVC está estrechamente acoplado en el cshtml C #?

@hishamco esa sería una buena pregunta para @rynowak . Ryan?

El motor de compilación en tiempo de ejecución de MVC usa la infraestructura de Roslyn para compilar C #, y espera / requiere que la configuración del sistema del proyecto C # se pase a través de .deps.json . MVC no tiene ningún acoplamiento estrecho con el código que se genera, sino que proporciona infraestructura para compilar vistas de C # en tiempo de ejecución utilizando la configuración generada por un proyecto de C #.

Cualquiera que quiera compilar VB en tiempo de ejecución deberá implementar un motor de visualización que lo haga.

Gracias @rynowak por tu aclaración

utiliza la infraestructura de Roslyn para compilar C #, y espera / requiere que la configuración del sistema del proyecto C # se pase a través de .deps.json

Si implemento un motor de vista VB, o clono C # uno con modificación, ¿qué configuraciones necesito pasar a .deps.json para que esto suceda?

+1
Visual Basic siempre es el lenguaje más importante del mundo .NET. ¡VB todavía tiene muchos fanáticos y lo usa hoy! Aunque muchas personas trabajan en proyectos C # en su lugar de trabajo, creo que a muchas personas como yo les encanta usar VB en su propio proyecto.

@AnthonyDGreen @KathleenDollard

El motor de afeitar .vbhtml de MVC 5 no se transfirió a Core principalmente porque menos del 1% de todos los proyectos web de VB lo usaron después de 5 versiones.

¿Qué usa entonces el otro 99%?

Angular, u otras bibliotecas frontales similares, supongo. Eso es lo que uso.

En realidad, eso también es exactamente lo que planeo hacer con nuestros nuevos proyectos web, mudarme a Angular desde ASP.Net MVC Razor, tengo que hacer 4 nuevos proyectos web este año, así que si alguien lleva la cuenta ..

¡VB ha sido un idioma popular durante muchos años! Como empresa, ciertamente tenemos muchos fragmentos de código que no nos gustaría tener que volver a escribir en C #. Estoy seguro de que hay muchas aplicaciones de formularios web de la vieja escuela que deben ser reescritas, especialmente con la entrada en juego de las nuevas reglas de la UE. ¡esto significaría que VB sería muy querido! Me parece sorprendente que microsoft sople tan caliente y frío en VB en un minuto que se está desarrollando a la par, ¡luego es el pariente pobre! Sí, están apareciendo nuevos lenguajes y frameworks, ¡pero no te deshagas de los populares y antiguos!

Me alegro de que se esté rastreando aquí, con suerte podría ver algo de acción entonces.

Todos los signos (palabras de comadreja) de MS son que planean simplificar VB.NET y / o no hacer nada y esperar a que otros escriban los bits que faltan. Ya he superado sus palabras de comadreja, estoy saliendo del desarrollo de VB.NET ahora.

Solo espero que cuando Microsoft adquiera GitHub no reciba el mismo tratamiento que recibió VB.Net (que se dé por muerto con promesas vacías de soporte completo).

@NatShaw Soy el PM de Visual Basic.Net.

No estoy seguro de lo que quiere decir con planear simplificar VB.NET, pero no hay planes para hacerlo. La estrategia del lenguaje Visual Basic permanece sin cambios.

Razor for VB es problemático. Para el flujo de trabajo de desarrollo principal, WebAPI es un buen flujo de trabajo para VB como se muestra aquí. (aparte de las plantillas)

@ tb-mtg VB.Net no se da por muerto. Hay mejoras constantes: pequeñas mejoras en el lenguaje y funcionan como IOperation para hacer que el soporte para Visual Basic en los analizadores Roslyn sea fácil de soportar VB en todo el ecosistema. Es cierto que VB se centra en escenarios en los que ya es bueno y en los nuevos escenarios apropiados en lugar de todos los escenarios nuevos. Por ejemplo, Scott Hunter ya ha anunciado que VB.Net funcionará con .NET Core 3.

@KathleenDollard Ya faltan piezas - .Net Core 2.x - ¿dónde están todas las plantillas de VB? Tipos de referencia que aceptan valores NULL? Solo en C #. Los planes futuros son geniales para el futuro, pero a VB ya le faltan cosas ahora.

Este es un tema para que Microsoft cree una gran tecnología y la abandone. Están abandonando VB, el lenguaje que construyó la empresa y se están convirtiendo en una tienda exclusiva de C #. Cuando se introduce una nueva tecnología, espero que se admitan todos los idiomas. Lamentablemente, este nuevo Microsoft no hace un trabajo tan bueno como lo hizo hace 15 años para mantener todos los idiomas como socios iguales. Es una lástima, tengo decenas de miles de líneas de VB y esperaba ir multiplataforma con asp.net core. Ahora, con formularios web abandonados en el núcleo de asp.net y sin VB, estoy atascado. Puedo cambiar de idioma o ??. Si hago el esfuerzo de cambiar el idioma, será a algo que no sea Microsoft, será a un idioma que fue creado para soportar todas las plataformas. Estoy cansado de que me descarten y me despidan por ser un muy buen desarrollador de VB. Puede que sea hora de tomar mi empresa y mi código y dejar Microsoft después de 30 años de usar y vender plataformas y lenguajes de Microsoft. La actitud condescendiente de la administración de .net hacia VB está llegando a ser demasiado. Todavía hay muchos de nosotros los VBers aquí que estamos muy decepcionados con Microsoft en estos días. Sería mejor si VB se hiciera de código abierto para que la comunidad pueda avanzar en todas las plataformas.

@SrqComputerguy Están abandonando VB

Incorrecto. @KathleenDollard dijo literalmente _hace un día_ en _ este mismo hilo_, que "la estrategia del lenguaje Visual Basic permanece sin cambios". (comentario)

@SrqComputerguy Es una lástima, tengo decenas de miles de líneas de VB y esperaba ir multiplataforma con el núcleo de asp.net. Ahora, con formularios web abandonados en el núcleo de asp.net y sin VB, estoy atascado.

Los formularios web son tecnología antigua (prácticamente antigua según los estándares de software), por lo que no es de extrañar que no sea compatible con .NET Core (con VB.NET _o_ C #). Vea esta publicación de blog de principios de esta semana sobre el uso de VB.NET con ASP.NET Core.

@SrqComputerguy Si hago el esfuerzo de cambiar el idioma, será a algo que no sea Microsoft, será a un idioma que fue creado para soportar todas las plataformas .

VB.NET _es_ multiplataforma, pero no con formularios web.

@SrqComputerguy Sería mejor si VB fuera de código abierto para que la comunidad pueda avanzar en todas las plataformas.

😕 Lo es. https://github.com/dotnet/vblang

@reduckted C # tiene la plantilla 'Aplicación web ASP.NET Core'; VB no. ¿Es eso correcto? Tipos de referencia que no aceptan valores NULL: no para VB.

La estrategia ya es que VB ya no es un ciudadano de primera clase, ¡sin cambios! Los enlaces del artículo @KathleenDollard son bastante insultantes, y nos dicen que estas nuevas características brillantes no son buenas para nosotros porque harían que nuestro código VB fuera demasiado desordenado. Qué montón de tonterías de comadrejas. Ejemplos:

  • VB 15 viene con un subconjunto de las nuevas características de C # 7.0
  • Enfocaremos la innovación en los escenarios y dominios centrales donde VB es popular.
  • Sin embargo, VB 15 no obtiene características como expresiones is, variables externas y funciones locales, que probablemente harían más daño que bien a la legibilidad de VB y agregarían significativamente a su recuento de conceptos.

Se acabó. Lo están simplificando.

La tecnología antigua no significa que no sea útil. WebFroms funciona muy bien para aplicaciones de línea de negocios donde no necesitamos SEO, pero sí necesitamos multiplataforma. WebForm hace que la apariencia de la versión winform se vea y actúe de manera similar. Eso también tiene muchos escenarios comerciales en los que funciona bien. No todo tiene que ser una aplicación angular.js C # MVC ni debería serlo. Sin embargo, esas son las únicas herramientas que MS está mejorando en este momento.

¿Por qué las páginas de razor (que son páginas asp actualizadas para .net) obtienen amor de C # en el núcleo y no en VB?

MS incluso compró el proyecto Mono, por lo que ahora que admite C # primero y solo si obtienen el visto bueno, VB obtiene algo de amor allí.

MS le está dando a Python más amor que VB. Python es más un lenguaje multiplataforma que C # o VB, que es donde probablemente irá este VBer en el futuro.

Es triste que la MS se base en un lenguaje que todavía no sabe cómo decir el final de una línea sin un;

¿MS tiene ya un equipo de VB? No tienen presencia en la web. Para los avances tendremos que buscar en otra parte.

Fue bueno mientras duró. VB RIP.

Hola,

¿Alguien en Microsoft puede reconsiderar el esfuerzo de compilar vb en vistas razor (.net core)? Creo que el proyecto blazor permite una nueva forma de compartir una gran cantidad de código existente en vb para crear nuevas aplicaciones web.

VB .NET fue una vez más popular porque puede hacer las mismas cosas que puede hacer con C #. Creo que si vb se queda atrás, efectivamente acabará con su popularidad.

Estamos portando una aplicación VB winforms muy grande a una aplicación web. Estamos en un 50% reescribiendo nuestro marco en JS, pero con blazor sería más rápido, más limpio y podríamos compartir una gran cantidad de código existente. Sería genial si también pudiéramos codificar las vistas con VB en lugar de C #. No todo es MVC y navaja.

Entonces, ¿quizás enfocarse en blazor haría el esfuerzo más pequeño?

Después de tener que trabajar con código VB moderno y heredado durante varios años, no puedo esperar a que muera la verbosidad. Creo que es inteligente que Microsoft se centre en un estilo de lenguajes (C).

@mcurros

Se ha considerado y reconsiderado el soporte de Razor.

Si bien es muy emocionante, en este momento Blazor es un esfuerzo experimental, sin planes de producto. Estoy de acuerdo en que si Blazor se convierte en un producto, vale la pena reconsiderar la historia de VB y espero que eso suceda. Si eso da como resultado un cambio en la estrategia con respecto al soporte de VB, no lo sé.

Tres preguntas para ti:

  • ¿Los anuncios sobre el avance de WinForms a .NET Core 3 lo llevan a reconsiderar su decisión de migrar el código de WinForms?

  • Estás reescribiendo para la web. ¿Está utilizando un back-end de VB WebAPI como este: combinación de Angular, Visual Basic y .NET Core para desarrollar aplicaciones web modernas ?

  • Estás usando JS, lo que significa que partes de tu equipo están usando efectivamente un lenguaje de corchetes. ¿Cuáles son las razones por las que no está convirtiendo a C #?

No hay nada que se esté haciendo en C # exclusivamente que no se pueda hacer en VB. MS fabrica los convertidores IL. Es cuestión de voluntad.

Aquí hay una pregunta para ti. Si tiene una gran cantidad de aplicaciones de línea de negocios que tienen una versión web .net 4.5.2 que se ven y actúan como la versión de escritorio, ¿cómo sugeriría MS que fueran multiplataforma?

Entonces, ¿es oficial que MS está simplificando la idea de incluir desarrolladores de VB en la ola de Asp.net Core y no está interesado en gastar recursos para ello?

@ sreenathGanga1988 Hemos anunciado que no hay planes actuales para admitir Razor en .NET Core en Visual Basic.NET. Se admite WebAPI que está en ASP.NET Core como parte de MVC. Solo Razor no es compatible. El motor de Razor es complejo y se creó para un solo idioma.

@KathleenDollard , podría crear VBHTML.Contrib para permitir que los fanáticos de VB contribuyan a construir un motor de afeitar utilizando el motor de afeitar actual para admitir VB

Las personas que escribieron la nueva versión de Razor creen que es muy complicado incluir Visual Basic, porque no fue diseñado para varios idiomas. No he mirado el código, pero confiaré en la opinión de esa gente. Basado en eso, no voy a crear una bifurcación.

Sin embargo, ASP.NET es de código abierto por una razón. Si un grupo de desarrolladores de VB creara una bifurcación en cualquier lugar y demostrara que están equivocados, sería genial. Estoy feliz de que este problema u otro problema en este repositorio apunte al proyecto, y si twittearé su existencia y progreso si lo desea.

He sentado las bases con .NET Foundation para un espacio de Visual Basic (posiblemente contrib, posiblemente algo más) para que haya una manera de administrar la propiedad y esas cosas de administración para proyectos en una comunidad de Visual Basic. Sin embargo, necesitan evidencia de que existe una comunidad que tendrá repos que brinden las cosas que la gente quiere (la Fundación trabaja para evitar proyectos muertos). Tenía la esperanza de que las plantillas de Entity Framework fueran esa semilla, pero eso no ha ido bien. Esto no es específico de VB, y es por eso que ve cosas en repositorios personales: plantillas de VB EF en @bricelam , el catálogo de herramientas global en @natemcmaster , y una versión bifurcada de un analizador de línea de comando @natemcmaster mientras trabajamos en uno nuevo .

Por lo tanto, aunque un proyecto y un prototipo no son suficientes para atraer el interés de la Fundación, si surge un proyecto exitoso, se puede trasladar a la Fundación .NET.

¡Gracias por tu aclaración, pero aún no estoy seguro de por qué Razor se creó para apuntar a C # solo mientras que Roslyn puede admitirlos a ambos!

No he mirado el código de Razor para saber si construye directamente un árbol de sintaxis, pero suponiendo que lo haga ...

Roslyn trabaja con árboles de sintaxis específicos, explícitos y sin formato que son diferentes para C # y VB. Por ejemplo, existen dos puntos y coma y llaves en C #, no en VB. End Sub y Handles existen en VB y no en el árbol de sintaxis de C #.

@KathleenDollard

Sí, entiendo que el proyecto blazor es experimental, pero se compila en el ensamblaje web y es una forma más fácil de hacer aplicaciones multiplataforma (compartiendo el código existente en el servidor y los clientes, me gusta Windows Server y ASP .NET, así que prefiero ejecutar un servidor que admite el marco .NET completo para reutilizar nuestra base de código existente).

En cuanto a tus preguntas:

  1. .NET core 3 no hace que las aplicaciones de WinForms sean multiplataforma, por lo que no agrega demasiado.

  2. Estoy reescribiendo para la web porque hace que nuestras aplicaciones sean multiplataforma. Estamos usando un controlador ASP .NET para compartir el código existente, por lo que en el servidor no tenemos problemas. Como dije, estamos usando nuestro propio marco, que está comenzando a proporcionar la misma funcionalidad en JS, pero necesitamos volver a escribir el código del cliente y probarlo, y la interfaz de usuario todavía está tomando al menos el 80% del desarrollo. hora.

  3. Comenzamos a portar nuestro marco a JS antes del proyecto blazor. La reescritura en C # no hará que nuestra aplicación cliente sea multiplataforma, requerirá apuntar al navegador de todos modos o convertir a Xamarin u otra cosa, por lo que el esfuerzo es el mismo.

Programo en C, C ++, C #, VB, JS y sé cómo usar varias pilas, pero tenemos varios miembros en nuestro equipo que tendrán dificultades para convertir a otro idioma. De todos modos, el punto es reutilizar nuestro código base probado, no reescribirlo. Si blazor pudiera compilar VB en vistas, nos ahorraría mucho tiempo, eso es todo.

También es extraño que los usuarios comprendan que antes podían compilar vistas de afeitar en VB .NET con el marco completo. Parece que dejaste atrás a VB. Y todo comenzó con .NET core, ¿no fue primero un proyecto experimental?

Para agregar un poco más de contexto, estamos portando tres ERP de misión crítica, para diferentes líneas de negocios.

Saludos.

@mcurros

Gracias por compartir más sobre su escenario.

El motor Razor se reescribió para ASP.NET Core y ahí es donde no se hizo el esfuerzo para varios idiomas. El bajo uso de la versión VB del motor Razor fue uno de los factores determinantes. Y sí, la existencia de Blazor hace que esa decisión sea bastante dolorosa.

@KathleenDollard

Gracias Kathleen por compartir las ideas. Espero que los lenguajes en .NET no empiecen a competir entre sí, una de las cosas más atractivas con .NET fueron los lenguajes y la interoperabilidad entre ellos, ahora parece que ese ya no sería el caso. Ahora no es suficiente elegir .NET como pila de desarrollo, supongo que también tendremos que tener cuidado con los lenguajes que elegimos. Lástima, se siente como un paso atrás.

Sin embargo, en la última pregunta, creo que razor se escribió mucho antes que .NET core, con páginas web ASP .NET y webmatrix, así que creo que quiere decir que el motor razor se reescribió en .NET core dirigido a C #. Estoy en lo cierto?

La mejor de las suertes.

Hola,
He encontrado esta publicación: ¿Por qué no Razor? .
¿Qué opinas sobre evitar por completo el uso de la sintaxis de Razor en proyectos ASP .NET Core y Blazor en favor de un desarrollo puro de C # y VB.NET? ¿Estamos seguros de que necesitamos la sintaxis de Razor para desarrollar aplicaciones web que necesitan emitir archivos HTML5 y CSS?

Saludos,
Filippo.

@filippobottega

Bueno, eso fue antes de blazor. El problema es que necesitas un motor de plantillas en el cliente, y en el caso de blazor es solo eso. En blazor razor se está ejecutando en el navegador, no en el servidor (pero podría ejecutarse en el servidor si fuera necesario). Por lo tanto, la gente está tratando de compartir código entre el cliente y el servidor en el navegador durante años. Compartir código de validación será un caso simple, pero en nuestro caso compartimos metadatos que describen modelos para que los componentes puedan configurarse a sí mismos usando esos metadatos.

Node.JS se ha vuelto popular porque puede compartir código entre el navegador y el servidor. Entonces, ¿por qué no compartir el código .NET entre el navegador y el servidor? Razor se compila en un ensamblaje web con su código compartido, y eso es todo. Sí, puede compilar, ejecutar y distribuir su aplicación, pero el navegador tiene una mejor capacidad multiplataforma y apuntará a más plataformas con el mismo código. También he visto WPF compilado en webassembly si desea seguir ese camino.

Preferimos aprovechar los componentes JS existentes y mezclarlos con nuestra base .NET, pero preferimos .NET y razor como reemplazo de otros frameworks JS, como angular. Es 10 veces más productivo si sabe lo que está haciendo, al menos para nosotros.

Saludos.

@mcurros Sí, se

@mcurros Ok, es cierto que necesitamos un motor de plantillas, pero el problema es que la sintaxis de Razor no es compatible con un diseñador WYSIWYG sólido.
Por ejemplo, Blazor usa Bootstrap como biblioteca CSS. Hay un diseñador interesante para Boostrap llamado Bootstrap Studio pero no es compatible con la sintaxis de Razor.
Para las aplicaciones de escritorio WinForms, existe un buen diseñador WYSIWYG para diseñar rápidamente interfaces, para XAML lo mismo. ¿Existe un diseñador que podemos utilizar para crear rápidamente HTML5-CSS con vistas de sintaxis de Razor (.cshtml / .vbhtml)?

@filippobottega
Como los dispositivos que pueden ejecutar navegadores están en el orden de 10K, creo que hacer una herramienta WYSIWYG precisa probablemente no valga la pena. La tendencia en estos días es ejecutarlo en el navegador y dejar que el navegador haga el renderizado. Las muestras de Blazor usan Bootstrap, pero razor es un motor de plantillas, puede emitir lo que desee y el marco CSS / HTML que desee. Las partes interesantes son la compilación para el ensamblaje web y la maquinilla de afeitar modificada para proporcionar enrutamiento SPA, y todas las cosas que necesita para construir un cliente SPA. Además, si es necesario, puede procesarlo en el servidor (para sitios web públicos e indexación de motores de búsqueda). Creo que es bastante genial.

Por lo tanto, blazor proporciona compilación de ensamblado web en tiempo real y se ejecuta en el navegador presionando F5. Es rápido, pruébalo.

@mcurros Gracias por tu respuesta. Estoy de acuerdo con usted, incluso si creo que la posibilidad de cambiar la estructura de las plantillas con arrastrar y soltar usando la vista previa del navegador puede ser realmente útil.
Si piensa en una vista previa del desarrollador donde los componentes tienen la capacidad de moverse, cambiar de tamaño e incrustarse en otros componentes con arrastrar y soltar, finalmente actualice la plantilla CSHTML.
Por ejemplo, Concrete5 le permite cambiar el diseño sobre la marcha.
Avíseme si cree que un "modo de diseño" será factible en el futuro.

Atentamente,
Filippo.

No creo que haya futuro para VB:
La nueva estrategia de Microsoft para acabar con la evolución conjunta de C # y Visual Basic hará que los desarrolladores lo respeten aún menos.
C # es el futuro para los desarrolladores de .Net, por lo que es hora de limitar el uso de Visual Basic a los sistemas heredados locales.

https://www.infoworld.com/article/3167210/application-development/visual-basic-is-the-odd-man-out-in-the-new-net.html

https://www.infoworld.com/article/3254564/application-development/doing-nicely-now-visual-basics-popularity-could-take-a-hit.html
https://blogs.msdn.microsoft.com/dotnet/2017/02/01/the-net-language-strategy/

250 millones de líneas de código, la mitad de las cuales todavía están en uso, ahora deben reescribirse. VB.Net fue asesinado debido a que la última generación de programadores desconocía por completo el lenguaje en sí (y todos los idiotas que seguían comparándolo con Visual Basic - Apples to Oranges) con comparaciones absurdamente falsas en el rendimiento y otros vectores. RIP VB.Net y los millones de desarrolladores que perderán sus trabajos como resultado.

@marcusoftnet El ejemplo de Damian es genial usar .cshtml para las vistas y el resto de la aplicación en VB.NET , pero será muy bueno usar .vbhtml para las vistas 😃

Yo no se que tiene Microsoft en la cabeza, teniendo en las manos un Lenguaje de Programación como VB pudiendo apropiarse en la Web de los dos ambitos del lado del cliente y de lado del servidor

cliente: vbscript
servidor: vb

Pulir VB es algo que los beneficiaria, es comprensible, entendible y adaptable, realmente da mucha lastima y nostalgia saber que vb.net no está en la web, pero es culpa de ustedes y centrarse solo en uno

Bing translation:
I do not know that has Microsoft in the head, having in the hands a programming language like VB being able to appropriate on the Web of the two areas of the client side and server side

Client: VBScript
Server: VB

Polishing VB is something that the beneficiary, is understandable, understandable and adaptable, really gives a lot of pain and nostalgia to know that vb.net is not on the web, but it is your fault and focus only on one

Esto permitirá que VB.NET continúe siendo compatible para agregar las características que ya se agregaron en C #, pero nuevamente no vbhtml 😕

@hishamco No. Aunque comparto tu :( el motor Razor solo admite C #.

El motor de Razor solo admite C #

Eso es lo que quise decir 😄

Tibor Index muestra que VB.NET está creciendo, de todos modos necesitamos vb razor

Como @DamianEdwards ,

https://github.com/mevdschee/aspnetcorevb

@mevdschee Tengo curiosidad por el proceso que atravesó para transferirlo a VB.NET ya que la plantilla del proyecto no está disponible a través de Visual Studio / no es compatible con VSCode. ¿Cómo hiciste esto?

@Webbarrr Convertí el código C # a VB a mano y usé la plantilla de Visual Studio C # para comenzar.

@reduckted @hishamco @muratg @ tb-MTG @brunojuliao @Eilon @rynowak @CheungTatMing @VBDotNetCoder @ simonmilne80 @NatShaw @SrqComputerguy @ sreenathGanga1988 @mcurros @filippobottega @mrjohnr @beefydog @mevdschee @ Baner041986 @hannespreishuber @Webbarrr

Estoy de acuerdo en que vbhtml es una causa perdida, ¡porque el código VB.NET no encaja bien entre la sintaxis HTML, CSS y JavaScript! En cambio, pido vbxaml!
Publiqué esta sugerencia en el repositorio de VB.NET hace meses:
https://github.com/dotnet/vblang/issues/329
Estas son citas:

Deje que VB.NET monte la nueva ola de WebAssembly:
Después de WebAssembly y Blazor, la oportunidad se representa a sí misma: ahora es lógico escribir XAML en lugar de HTML5 (las diferencias son mínimas) y escribir VB.NET en lugar de Java script (de la misma manera que C # reemplaza a Java ahora en Blazor).
Ya existe un proyecto llamado Ooui que intenta hacer eso en C #.
Creo que VB.NET debería hacer lo mismo, y tener un proyecto para diseñar páginas ASP.NET con código XAML y VB.NET, haciendo uso del trabajo realizado en SilverLight, Blazor y Ooui. Si esto comienza ahora, puede crecer de manera constante, en lugar de esperar a que Blazor y Ooui se estabilicen y luego MS diga:
Lo sentimos, ¡será costoso para VB.NET ponerse al día!

VBlazor (.vbxaml) hará que los desarrolladores de escritorio con experiencia en VB.NET y WPF / UWP pasen a ASP.NET sin problemas.

En mi humilde opinión, usar XAML o un lenguaje de plantillas como Fluid hará felices a todos, porque Razor está escrito solo para C #

VBLazor sería similar a la vista de diseño uwp / wpf, pero con dos archivos de código subyacente, uno para los códigos del servidor vb.net y otro para los códigos del cliente (script), con la capacidad de usar el patrón MVVM para organizar grandes proyectos. XAML se cumplirá con html5, los estilos Xaml se compilarán en CSS y los códigos de secuencia de comandos de VB.NET se compilarán en WebAssembly.

Estoy cerrando esto porque, lamentablemente, está bastante claro que no hay intención de agregar plantillas de proyecto VB.NET para ASP.NET Core.

@reduckted @muratg @ tb-MTG @brunojuliao @rynowak @CheungTatMing @VBDotNetCoder @ simonmilne80 @NatShaw @SrqComputerguy @ sreenathGanga1988 @mcurros @filippobottega @mrjohnr @beefydog @mevdschee @ Baner041986 @hannespreishuber @Webbarrr

Finalmente: ¡Una muestra funcional de VB.NET ASP.NET MVC Core Razor!
https://github.com/VBAndCs/VB.NET-Razor
Implementé un VBRazorViewEngine simple en el proyecto VbRazor.
Para usar VBRazorViewEngine en el proyecto, agregué estas dos declaraciones al método Startup.ConfigureServices:
`` `VB.NET
services.AddTransient (Of IConfigureOptions (Of MvcViewOptions), VBRazor.VBRazorMvcViewOptionsSetup) ()
services.AddSingleton (de IViewEngine, VBRazor.VBRazorViewEngine) ()


The VBRazor is just a VB class that implements the IVBRazor Interface:
```VB.NET
Public Interface IVBRazor
    ReadOnly Property Razor As String

End Interface

La propiedad Razor usa los literales xml para componer el código HTML y lo devuelve como una cadena. Ejemplo:
`` `VB.NET
Importaciones VbRazor

IndexView de clase pública
Implementa IVBRazor

Dim students As List(Of Student)

Public Sub New(students As List(Of Student))
    Me.students = students
End Sub

Public ReadOnly Property Razor As String Implements IVBRazor.Razor
    Get
        Dim x = <html>
                    <h3> Browse Students</h3>
                    <p>Select from <%= students.Count() %> students:</p>
                    <ul>
                        <%= (Iterator Function()
                                 For Each std In students
                                     Yield <li><%= std.Name %></li>
                                 Next
                             End Function)() %>
                    </ul>
                </html>
        Return x.ToString()

    End Get
End Property

Clase final


To use the IndexView from the Controller, I passed it to the View method as the model data in the action method, and passed the actual model data to its constructor:
```VB.NET
Public Function Index() As IActionResult
    Return View(New IndexView(Students))
End Function

¡¡Eso es todo!! Si ejecuta el proyecto, verá esta página web:
VBRazor

Esto fue realmente fácil, pero necesita más trabajo, ¡así que espero que comiencen a contribuir a este proyecto para convertirlo en una herramienta realmente productiva!
Lo primero que debe hacer es crear una plantilla VB.NET para ASP.NET MVC Core. ¡Tuve que crear un proyecto C # y luego convertirlo a VB!

¡Lo segundo que debe hacer es agregar soporte intellisense para atributos html en literales xml en VB!

El motor de vista de verdad necesita analizar una especie de plantilla como la que hemos visto en Razor o Markdown, etc., pero lo que hiciste es fácil porque el marcado final generado a partir del código detrás es lo que hicieron las clases generadas por Razor

@hishamco
Hice esto en un par de horas, gracias a los literales XML de VB, ¡que casi se olvida! Yo mismo lo olvidé hasta unas semanas cuando estaba tratando de incluir una nueva sintaxis para sugerir, así que escribí y el editor lo completó con la etiqueta de cierre :) Sin embargo, queda mucho por hacer para que esta idea sea un producto completo.

https://gitter.im/VB-NET/Volunteer
Gracias.

Xml literal es una característica muy buena que solo tiene VB. Con respecto a vbhtml, necesita tiempo y esfuerzo y soy uno de los tipos interesados ​​del pasado, espero que podamos comenzar con esto pronto.

Hola a todos,
Esta es una maquinilla de afeitar VB funcional (Vazor). Que te diviertas:
https://github.com/VBAndCs/Vazor

Hola a todos,
Apoye esta propuesta https://github.com/aspnet/AspNetCore/issues/9270
Puede ser la alternativa fácil para crear páginas vbhtml.

@VBAndCs , intente evitar publicar sobre viejos problemas cerrados. Intentamos mantener este rastreador de problemas para errores y solicitudes de funciones en ASP.NET Core y minimizar otras discusiones.

@Eilon
Lo sentimos, pero esta es una solicitud de función que aún no existe. Estar cerrado no debería molestarle, pero sigue apareciendo en la búsqueda de Google, por lo que es importante mantener junta toda la información relacionada con este tema.
De todos modos, esta es mi última respuesta en este tema.
Gracias

@VBAndCs , no se desanime por el tono mandón de @Eilon (un administrador de Microsoft, no un desarrollador, según su biografía de Github). Supongo que solo está usando palabras extrañas para decir "gracias por su increíble contribución".

@mevdschee
Gracias por su apoyo :). Me puedo imaginar la enorme presión que está bajo @Eilon con cientos de notificaciones por día, errores que corregir, discusiones que hacer, preguntas que responder y sugerencias que rechazar: dancing_men:
Por lo tanto, me referiré a este tema en mis nuevas propuestas (que espero que sigan llegando hasta que VB.NET restaure su lugar correcto :)).
Espero que Eilon discuta propuestas importantes o al menos las deje abiertas por un tiempo para permitir que la comunidad las discuta en lugar de saltar inmediatamente al botón de cierre.
Gracias de nuevo @mevdschee , y lo siento @Eilon :)

He estado siguiendo este hilo durante mucho tiempo como una solución completa adecuada que, en mi opinión, debería haber estado en la hoja de ruta sin tener que ser forzada. Sin embargo, me decepcionó un poco ver después del arduo trabajo realizado por @VBAndCs que @Eilon intentaría detener a cualquier otra persona que intentara ayudar a resolver el problema para tanta gente. Puedo entender que hay mucha presión, sin embargo, ¡el hecho de que la gente todavía esté siguiendo esto demuestra que es importante para mucha gente! Sigan con el buen trabajo :)

Hola a todos,

Recomendamos encarecidamente la actividad y las funciones de la comunidad, pero no podemos aceptar determinadas solicitudes de funciones o correcciones de errores porque no son una prioridad lo suficientemente alta para que las implementemos. Esto incluso incluye el caso en el que hay una solicitud de extracción que incluye pruebas y documentación. Hacer cualquier cambio de cualquier tamaño tiene un costo, incluido el costo a largo plazo, y tenemos que equilibrarlo con todos los demás trabajos potenciales que estamos considerando. Cuando se trata de motores de visualización, estamos 100% comprometidos con el motor de visualización de Razor con soporte para C # y una gran experiencia de editor en Visual Studio, Visual Studio para Mac y Visual Studio Code.

Creemos que existe una gran oportunidad aquí para que personas como @VBAndCs creen proyectos adicionales que funcionen con ASP.NET Core y se integren de diversas formas. Nos complace vincularnos a esos proyectos haciendo que las personas envíen PR a archivos Léame, como el Léame de MVC .

Gracias,
Eilon

Para @ simonmilne80 , @mevdschee y cualquiera que esté interesado:
Agregué un ejemplo funcional de páginas zml al repositorio, así que, por favor, llevemos la discusión a este tema: https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
y dale a @Eilon unos momentos de paz :)

Por cierto, estamos buscando agregar una mención de Vazor a un próximo ASP.NET Community Standup . ¿Tiene una publicación de blog a la que podamos hacer referencia además del repositorio de GitHub?

@Eilon
Perdón por retrasar mi respuesta. Primero necesitaba completar mi trabajo y escribir un archivo Léame que contenga información básica sobre las etiquetas ZML.
ZML 1.0 ahora tiene su propio repositorio y NuGet .
Le agradecería que mencionara ZML, ya que es independiente del idioma (el repositorio contiene una muestra de proyecto con dos versiones de c # y VB, y ambas usan los mismos archivos .zml.
Gracias.

Estoy buscando convertir mi aplicación VB.NET WebForms a .NET Core Razor Pages. Si es cierto que VB no será compatible, ¿a qué ruta ASP.NET moderna debo migrar en su lugar? Reescribir la aplicación en C # no es una opción.

@Gruski si hay mucho código VB.NET que es código de "biblioteca", es decir, ni siquiera específico de WebForms, entonces todo funciona bastante bien en el mundo .NET Core / Razor Pages / Blazor. Es la parte de WebForms vs. Razor (y Blazor) la que requiere mucho más trabajo.

Acabamos de publicar una vista previa de un libro electrónico para ayudar a los desarrolladores a migrar de WebForms a Blazor:

https://docs.microsoft.com/en-us/dotnet/architecture/blazor-for-web-forms-developers/index

Por lo tanto, podría ser posible mantener algunas de sus aplicaciones en VB, y luego solo la interfaz de usuario debería ser C #.

Por lo tanto, podría ser posible mantener algunas de sus aplicaciones en VB, y luego solo la interfaz de usuario debería ser C #.

También puede usar un proyecto VB.NEt para la interfaz de usuario. Solo los archivos cshtml contendrán fragmentos de C #. Si desea evitar el código C #, puede usar literales xml en VB.NEt para diseñar la interfaz de usuario como lo hice en mi proyecto Vazor:
https://github.com/VBAndCs/Vazor-DotNetCore2
Anthony Green llevó esto a otro nivel como puedes ver en sus últimos temas en su blog:
https://anthonydgreen.net/
O aquí:
https://github.com/dotnet/vblang/issues/483
También sugerí usar comandos de etiqueta XML para evitar tanto C # como VB y tener un XML Razor puro (llamé ZML):
https://github.com/VBAndCs/ZML

Aunque nuestro proyecto es un proyecto de WebForms, ya no lo usamos como se pretendía originalmente. Esta era una aplicación empresarial antigua pero grande que a lo largo de los años se ha convertido para usar únicamente el marco del lado del cliente Vue.js que llama a WebMethods que reside en cada uno de los códigos .aspx detrás de las páginas. Así que no hay: no hay componentes de servidor (no hay runat = "servidor" nada), no hay estado de visualización, no hay publicaciones de página completa (no hay elemento "formulario"). Aparte del método Load, que inicializa dinámicamente algunos componentes del lado del cliente de Vue, el código subyacente solo contiene WebMethods.

Con esto en mente y el requisito de pasar a .NET core, ¿a qué nueva tecnología ASP.NET debo migrar el proyecto si quiero alejarme de WebForms? MVC para mí no tiene sentido ya que Vue.js ya tiene el patrón MVC en el lado del cliente, que en mi opinión es más elegante, entonces, ¿por qué lo necesitaría en el servidor? Blazor tampoco tiene sentido porque eso implicaría volver a escribir toda la interfaz de usuario.

@Gruski Recomendaría Razor Pages. Es extremadamente fácil comenzar con: acaba de crear una carpeta Pages en su aplicación ASP.NET Core y comience a agregarle archivos .cshtml. Cada página es esencialmente una URL, y puede poner HTML arbitrario en ella, luego agregar cualquier C # que desee para la lógica del servidor.

Pruebe este tutorial para comenzar: https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-3.0&tabs=visual-studio

@Eilon ¿Las páginas de Razor tienen código detrás para colocar WebMethods? De lo contrario, ¿dónde se colocarían los WebMethods? Mirándolo, parece que todavía usa una versión simplificada del patrón MVC del lado del servidor detrás de escena, que es redundante cuando se usa Vue. Tampoco es compatible con VB en Razor Pages.

Razor Pages no admite WebMethods. Recomendaría usar MVC para esos métodos. Puede mezclar Razor Pages y MVC en la misma aplicación.

@Gruski He estado viajando y me

Si tiene su interfaz de usuario en Vuew.js, ¿puede usar ASP.NET Core MVC / WebAPI? Esto funciona bien. Si bien este artículo incluye demasiado Angular, sí muestra la técnica general: https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern- aplicaciones web /

Hay dos áreas de problemas con el soporte:

  • Razor no es compatible con Visual Basic, aunque, como se señaló, @VBAndCs y @AnthonyDGreen han desarrollado una solución potencialmente mejor para Visual Basic.
  • No hay plantillas para ASP.NET WebAPI.
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

rmarinho picture rmarinho  ·  78Comentarios

danroth27 picture danroth27  ·  130Comentarios

tebeco picture tebeco  ·  75Comentarios

pekkah picture pekkah  ·  200Comentarios

natemcmaster picture natemcmaster  ·  213Comentarios