Aspnetcore: Suporte a Visual Basic .NET (VB.NET) no ASP.NET Core

Criado em 3 jan. 2018  ·  91Comentários  ·  Fonte: dotnet/aspnetcore

Muitas perguntas foram feitas sobre o suporte do VB.NET no ASP.NET Core nos últimos anos. Se você segui-los, todos eles levam a becos sem saída - fechados sem nenhuma resposta real ou são movidos para outros repositórios não relacionados ao ASP.NET Core (como em algum lugar na organização dotnet ).

Ao longo desse tempo, falou-se em apoiar o VB. É completamente compreensível que o ASP.NET Core não tenha suporte para VB desde o início. O projeto estava passando por muitas mudanças rápidas, então fazia sentido focar no C # inicialmente e adicionar suporte para outras linguagens depois. Mas a ideia de apoiar o VB pareceu se perder ao longo do caminho.

Aqui está um breve cronograma:

16 de dezembro de 2014:

Planejamos ter pontos de extensibilidade para que outras linguagens como VB, F #, etc possam ser adicionadas por meio de um pacote de suporte ou algo semelhante.
https://github.com/aspnet/Home/issues/236#issuecomment -67046039

25 de abril de 2015:

Olá a todos, boas notícias! Anunciamos planos para oferecer suporte a VB no ASP.NET 5 / DNX!
https://github.com/aspnet/Home/issues/236#issuecomment -96003847

Temos o prazer de anunciar que a ASP.NET 5 terá suporte total com Visual Basic (ferramentas e tempo de execução - incluindo suporte de tempo de execução de plataforma cruzada).
https://blogs.msdn.microsoft.com/webdev/2015/04/24/making-it-better-asp-net-with-visual-basic-14/

19 de novembro de 2016:
O suporte VB desaparece do roteiro:

 |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 dezembro de 2017:

não há planos para adicionar um modelo VB para ASP.NET Core
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

O suporte VB parece ter saído de

"Ainda não funciona, mas planejamos permitir o VB"

para

"Haverá suporte total para VB!"

para

"VB não é suportado, mas shhh, não diga a ninguém".

Então, minha primeira pergunta é:

O que aconteceu e por que não houve nenhum anúncio ou discussão com a comunidade sobre isso?

Parece estranho deixar de anunciar o suporte para VB.NET no ASP.NET Core em uma postagem oficial do blog para não oferecer suporte a ele sem nenhum feedback. Houve algum anúncio sobre isso? Se houve, certamente não foi amplamente publicado.

Minha próxima e _mais importante_ pergunta é:

O que a comunidade VB pode fazer para ajudar a adicionar suporte para VB.NET ao ASP.NET Core?

Existem modelos de projeto que podemos escrever?
Existem geradores de código que podemos implementar?
O que podemos fazer para tornar o ASP.NET Core tão incrível para desenvolvedores VB quanto é para desenvolvedores C #?


Eu lancei junto um aplicativo ASP.NET Core simples (link excluído porque o repo está desatualizado) em VB criando um aplicativo de console .NET Core, editando o arquivo de projeto e copiando as classes geradas do ASP.NET Core C # modelo. Funciona bem e, embora seja muito básico, não consigo ver nenhuma razão para que o VB.NET não seja compatível.

Comentários muito úteis

+1
Visual Basic sempre a linguagem mais importante do mundo .NET. VB ainda tem muitos fãs e usa até hoje! Embora muitas pessoas trabalhem em projetos C # em seus locais de trabalho, mas acredito que muitas pessoas como eu, adoram usar VB em seus próprios projetos.

Todos 91 comentários

cc @DamianEdwards

Eu registrei um problema há muito tempo para usar o VB junto com .cshtml no repositório Razor , desde então não vi nenhuma ação 😟.
Algumas semanas atrás eu vi um ótimo exemplo de @DamianEdwards que demonstra um aplicativo Hyprid VB ASP.NET Core aqui

Além do excelente resumo @reduckted , a documentação da Microsoft para a sintaxe do Razor para ASP.NET Core (como em 2017-10-18) ainda tem várias referências ao Visual Basic e ao uso de arquivos .vbhtml:

Esta restrição não se aplica a arquivos Razor .vbhtml porque a sintaxe do Visual Basic coloca parênteses ao redor dos parâmetros de tipo genérico em vez de colchetes.

No entanto, ScottAddie @ MSFT postou um comentário em 21-07-2017:

ASP.NET Core ainda não oferece suporte a VB.NET. Você precisará manter o ASP.NET adequado por enquanto.

Os arquivos Visual Basic / vb.net / .vbhtml serão incluídos no .Net Core? E se sim, quando ??

Como podemos ajudar a fazer esse apoio acontecer? Eu adoraria ver o suporte VB.Net e F #!

Enviei um PR para remover as referências VBHTML dos documentos ASP.NET Core: https://github.com/aspnet/Docs/pull/5201

No momento, não há planos para introduzir o suporte VBHTML ao ASP.NET Core.

Temos modelos F # para ASP.NET Core, que são instalados como parte do .NET Core SDK.

@Eilon Atualmente não há planos para introduzir o suporte VBHTML ao ASP.NET Core.

Pessoalmente, não estou preocupado com o suporte a VBHTML porque não uso páginas do Razor e não pretendo usar. Conforme mencionado por @AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626), não faz sentido adicionar suporte VB a ele porque raramente era usado no MVC 5, e, Eu imagino, seria preciso uma grande quantidade de trabalho para não muito ganho.

@Eilon Temos modelos F # para ASP.NET Core, que são instalados como parte do .NET Core SDK.

OK, mas não tenho certeza de qual é o seu ponto aqui. Se houver alguma coisa, isso não apenas reforça o fato de que _deve_ haver modelos VB também?

Os modelos F # não foram criados pela comunidade F #? Se a equipe da Microsoft não cria modelos VB, então por que os modelos VB não podem ser criados pela comunidade VB?

@reduckted, a questão se resume à demanda e ao custo - tanto o custo inicial quanto o custo contínuo. A demanda tem sido muito baixa, conforme observado anteriormente. O custo para criar um conjunto inicial de modelos pode não ser muito, mas alguém precisa mantê-los. Com o F #, temos pessoas na Microsoft que estão comprometidas em mantê-los. Não temos essas pessoas para VB no momento.

Além disso, uma limitação dos modelos F # é que eles se concentram mais no lado API das coisas; ou seja, sem Razor ou CSHTML (porque não há FSHTML). Com usuários VB, meu palpite é que a maioria dos usuários que usam VB estariam esperando uma experiência VBHTML para MVC, e o custo de produção disso é enorme - meses e meses de trabalho. Portanto, não está claro para mim que adicionar modelos VB limitados seja particularmente valioso.

@Eilon Com usuários VB, meu palpite é que a maioria dos usuários que usam VB estariam esperando uma experiência VBHTML para MVC ...

Você pode querer falar com @AnthonyDGreen , porque esse é exatamente o _opósito_ do que ele disse no comentário que eu vinculei anteriormente (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626). Citarei desta vez (ênfase minha):

O mecanismo de barbear .vbhtml do MVC 5 não foi portado para o Core principalmente porque menos de 1% de todos os projetos da web em VB o usaram após 5 versões.

@reduckted - interessante, isso é novidade para mim. Estou pensando nos dias dos Web Forms, que inicialmente foram projetados com conceitos familiares aos desenvolvedores VB (VB6, especificamente), e os Web Forms eram muito centrados em HTML (sorta), o que me levou a pensar que VBHTML seria mais interessante para aquele grupo de pessoas. Então, novamente, isso significa anec-data de aproximadamente 15 anos 😄

A propósito, para ser claro, não dissemos que nunca faríamos isso - apenas que não está nos planos.

Eu sou um fã de VB 😄, e espero que .vbhtml seja fora da caixa, a abordagem híbrida que mencionei antes não é suficiente para todos os caras do VB, mas está bem em alguns casos. Minha pergunta é alguma reimplementação de Razor para emitir VB em vez de C # isso vai funcionar, ou o MVC está fortemente acoplado em cshtml C #?

@hishamco Infelizmente o Razor foi implementado de forma que VB e C # fossem caminhos separados. Conversei com algumas pessoas envolvidas e é um projeto bastante grande.

@KathleenDollard Existem outros projetos .NET Core que oferecem suporte a ViewEngines personalizados para os tipos de arquivo .pug e .md .

Certamente podemos fazê-lo funcionar para arquivos .vbhtml razorpages usando um .vbproj com <Project Sdk="Microsoft.NET.Sdk.Web"> .

@ tb-mtg É totalmente de código aberto, se você quiser explorá-lo e ver o que esses projetos fizeram. As pessoas que escreveram me disseram que foi um grande esforço. O tamanho do esforço e a adoção excessivamente baixa de vbhtml nas versões anteriores do MVC tornam sua venda difícil.

@KathleenDollard Vou repetir minha pergunta novamente, se eu

@hishamco, essa seria uma boa pergunta para @rynowak . Ryan?

O mecanismo de compilação de tempo de execução do MVC usa a infraestrutura Roslyn para compilar C # e espera / exige que as configurações do sistema de projeto C # sejam passadas por .deps.json . MVC não tem nenhum acoplamento forte com o código que é gerado, mas fornece infraestrutura para compilar visualizações C # em tempo de execução usando configurações geradas por um projeto C #.

Qualquer pessoa que queira compilar o VB em tempo de execução precisará implementar um mecanismo de visualização que faça isso.

Obrigado @rynowak pelo seu esclarecimento

usa a infraestrutura Roslyn para compilar C # e espera / exige que as configurações do sistema de projeto C # sejam passadas por .deps.json

Se eu implementar um mecanismo de exibição VB - ou clonar um C # com modificação -, quais configurações preciso passar para .deps.json para que isso aconteça?

+1
Visual Basic sempre a linguagem mais importante do mundo .NET. VB ainda tem muitos fãs e usa até hoje! Embora muitas pessoas trabalhem em projetos C # em seus locais de trabalho, mas acredito que muitas pessoas como eu, adoram usar VB em seus próprios projetos.

@AnthonyDGreen @KathleenDollard

O mecanismo de barbear .vbhtml do MVC 5 não foi portado para o Core principalmente porque menos de 1% de todos os projetos da web em VB o usaram após 5 versões.

O que os outros 99% usam então?

Angular, ou outras bibliotecas front-end semelhantes, eu presumo. É isso que eu uso.

Na verdade, isso também é exatamente o que eu planejo fazer com nossos novos projetos web mudar para Angular do ASP.Net MVC Razor, eu tenho que fazer 4 novos projetos web este ano, então se alguém continuar contando ... LOL

VB tem sido uma linguagem popular por muitos anos! Como empresa, certamente temos muitos trechos de código que não gostaríamos de ter que reescrever em C #. Tenho certeza de que há muitos aplicativos de formulário da web da velha escola que serão reescritos, especialmente com as novas regras da UE entrando em vigor, isso significaria que o VB seria muito desejado! Acho incrível que a microsoft sopre tão quente e fria no VB em um minuto em que está sendo desenvolvida no mesmo nível, depois é um parente pobre! Sim, novas linguagens e estruturas estão sendo lançadas, mas não se esqueça das populares e antigas!

Ainda bem que está sendo rastreado aqui, espero que haja alguma ação então.

Todos os sinais (palavras de fuinha) do MS são que eles planejam simplificar o VB.NET e / ou não fazer nada e esperar que outros escrevam os bits que faltam. Eu superei suas palavras furiosas, estou saindo do desenvolvimento VB.NET agora.

Só espero que quando a Microsoft adquirir o GitHub ele não receba o mesmo tratamento que o VB.Net recebeu (sendo deixado para morrer com promessas vazias de suporte total).

@NatShaw Sou o PM para Visual Basic.Net.

Não tenho certeza do que você quer dizer sobre planejar simplificar o VB.NET, mas não há planos para fazer isso. A estratégia de linguagem Visual Basic permanece inalterada.

O Razor for VB é problemático. Para o principal fluxo de trabalho de desenvolvimento, WebAPI é um excelente fluxo de trabalho para VB, conforme mostrado aqui. (além de modelos)

@ tb-mtg VB.Net não foi deixado para morrer. Há melhorias constantes - pequenas melhorias na linguagem e funcionam como IOperation para tornar o suporte para Visual Basic em analisadores Roslyn fácil de suportar VB em todo o ecossistema. É verdade que o VB se concentra em cenários onde já é bom e novos cenários apropriados, em vez de todos os novos cenários. Por exemplo, Scott Hunter já anunciou que o VB.Net funcionará com o .NET Core 3.

Peças do @KathleenDollard já estão faltando - .Net Core 2.x - onde estão todos os modelos VB? Tipos de referência anuláveis? C # apenas. Planos futuros são ótimos para o futuro, mas o VB já está perdendo coisas agora.

Este é um tema para a Microsoft criar uma grande tecnologia e abandoná-la. Eles estão abandonando o VB, a linguagem que construiu a empresa, e se tornando uma loja exclusiva de C #. Quando uma nova tecnologia é introduzida, espero que todos os idiomas sejam suportados. Infelizmente, esta nova Microsoft não faz um trabalho tão bom quanto fazia 15 anos atrás em manter todos os idiomas com parceiros iguais. É uma pena, eu tenho 10s de milhares de linhas de VB e esperava cruzar plataforma com ele usando o núcleo asp.net. Agora, com os formulários da web abandonados no núcleo do asp.net e nenhum VB, estou preso. Posso mudar o idioma ou ??. Se eu me esforçar para mudar a linguagem, será para algo diferente da Microsoft, será para uma linguagem que foi construída para suportar todas as plataformas. Estou cansado de receber descontos e dispensar por ser um desenvolvedor VB muito bom. Pode ser a hora de pegar minha empresa e código e deixar a microsoft após 30 anos de uso e venda de plataformas e linguagens da Microsoft. A atitude condescendente da administração do .net em relação ao VB está começando a ser demais. Ainda há muitos de nós VB por aqui que estão muito decepcionados com a Microsoft atualmente. Seria melhor se o VB fosse feito de código aberto para que a comunidade possa avançá-lo em todas as plataformas.

@SrqComputerguy Eles estão abandonando o VB

Errado. @KathleenDollard disse literalmente _um dia atrás_ neste mesmo tópico_, que "a estratégia de linguagem do Visual Basic permanece inalterada." (Comente)

@SrqComputerguy É uma pena, eu tenho 10s de milhares de linhas de VB e esperava cruzar plataforma com ele usando o núcleo asp.net. Agora, com os formulários da web abandonados no núcleo do asp.net e nenhum VB, estou preso.

Os formulários da Web são uma tecnologia antiga (praticamente antiga para os padrões de software), portanto, não é surpreendente que não sejam suportados no .NET Core (com VB.NET _ou_ C #). Veja esta postagem do

@SrqComputerguy Se eu me esforçar para mudar a linguagem, será para algo diferente da Microsoft, será para uma linguagem que foi construída para suportar todas as plataformas .

VB.NET _is_ plataforma cruzada, mas não com formulários da web.

@SrqComputerguy Seria melhor se o VB fosse feito de código aberto para que a comunidade possa avançá-lo em todas as plataformas.

😕 É sim. https://github.com/dotnet/vblang

@reduckted C # tem o modelo 'ASP.NET Core Web Application' - o VB não. Isso é correto? Tipos de referência não anuláveis ​​- não para VB.

A estratégia é que VB não é mais um cidadão de 1ª classe - sem mudança! O artigo @KathleenDollard links é um tanto insultante, dizendo-nos que esses novos recursos brilhantes não são bons para nós porque tornariam nosso código VB muito desordenado. Que monte de palavras sem sentido. Exemplos:

  • VB 15 vem com um subconjunto de novos recursos do C # 7.0
  • Focaremos a inovação nos principais cenários e domínios onde o VB é popular.
  • No entanto, o VB 15 não obtém recursos como expressões is, variáveis ​​de saída e funções locais, o que provavelmente faria mais mal do que bem à legibilidade do VB e aumentaria significativamente sua contagem de conceitos.

Acabou. Eles estão emburrecendo tudo.

A tecnologia antiga não significa que não seja útil. WebFroms funcionam muito bem para aplicativos de linha de negócios onde não precisamos de SEO, mas precisamos de plataforma cruzada. O WebForm faz com que a aparência da versão do winform pareça e atue de forma semelhante. Isso também tem muitos cenários de negócios que funcionam bem. Nem tudo precisa ser um aplicativo C # MVC angular.js e nem deveria ser. No entanto, essas são as únicas ferramentas que a MS está aprimorando no momento.

Por que as páginas do razor (que são páginas asp atualizadas para .net) recebem amor C # no núcleo e não VB?

A MS até comprou o projeto Mono, então agora ele suporta C # primeiro e somente se eles obtiverem a aprovação o VB receberá algum amor lá.

MS está dando mais amor a Python do que VB. Python é mais uma linguagem de plataforma cruzada do que C # ou VB, que é onde este VBer provavelmente irá no futuro.

É triste o MS estar contando com uma linguagem que ainda não sabe dizer o fim de uma linha sem um;

A MS ainda tem uma equipe VB? Eles não têm uma presença na web. Para avanços, teremos que procurar outro lugar.

Foi bom enquanto durou. VB RIP.

Oi,

Alguém na Microsoft pode reconsiderar o esforço de compilar vb em visualizações de navalha (núcleo .net)? Acho que o projeto blazor permite uma nova maneira de compartilhar muito código existente em vb para criar novos aplicativos da web.

O VB .NET se tornou mais popular porque você pode fazer as mesmas coisas que faz com o C #. Eu acho que se vb for deixado para trás, você efetivamente eliminará sua popularidade.

Estamos portando um aplicativo WinForms VB muito grande para um aplicativo da web. Estamos 50% no caminho de reescrever nosso framework em JS, mas com o blazor seria mais rápido, mais limpo e podemos compartilhar muito código existente. Seria incrível se também pudéssemos codificar as visualizações com VB em vez de C #. Nem tudo é MVC e navalha.

Então, talvez focar em blazor tornaria o esforço menor?

Depois de ter que trabalhar com código VB moderno e legado por vários anos, não posso esperar que a verbosidade acabe. Acho que é inteligente para a Microsoft se concentrar em um estilo de linguagem (C).

@mcurros

O suporte do Razor foi considerado e reconsiderado.

Embora seja muito empolgante, agora o Blazor é um esforço experimental, sem planos de produto. Concordo que se o Blazor se tornar um produto, vale a pena reconsiderar a história do VB e espero que isso aconteça. Se isso resulta em uma mudança na estratégia em relação ao suporte VB, eu não sei.

Três perguntas para você:

  • Os anúncios sobre o avanço do WinForms para o .NET Core 3 o levaram a reconsiderar sua decisão de portar o código do WinForms?

  • Você está reescrevendo para a web. Você está usando um back-end VB WebAPI como este: Combinar Angular, Visual Basic e .NET Core para desenvolver aplicativos da Web modernos ?

  • Você está usando JS, o que significa que partes de sua equipe estão efetivamente usando uma linguagem de chaves. Quais são os motivos pelos quais você não está convertendo para C #?

Não há nada que esteja sendo feito exclusivamente em C # que não possa ser feito em VB. MS faz os conversores IL. É uma questão de vontade.

Aqui está uma pergunta para você. Se você tiver um grande número de aplicativos de linha de negócios que possuem uma versão da web .net 4.5.2 que se parecem e agem como a versão de desktop, como o MS sugere que eles sejam multiplataforma.

Então, é oficial que a MS está burlando a ideia de incluir desenvolvedores VB na onda Asp.net Core e não está interessada em gastar recursos para isso?

@ sreenathGanga1988 Anunciamos que não há planos atuais para oferecer suporte ao Razor no .NET Core no Visual Basic.NET. Há suporte para WebAPI que está no ASP.NET Core como parte do MVC. É apenas o Razor que não é compatível. O motor Razor é complexo e foi criado para um único idioma.

@KathleenDollard você poderia criar VBHTML.Contrib para permitir que os fãs do VB contribuam para construir um motor de barbear usando o atual Razor Engine para suportar o VB

As pessoas que escreveram a nova versão do Razor acreditam que é muito complicado incluir o Visual Basic, porque ele não foi projetado para várias linguagens. Eu não li o código, mas vou confiar na opinião dessas pessoas. Com base nisso, não vou criar um fork.

No entanto, o ASP.NET é um código-fonte aberto por um motivo. Se um grupo de desenvolvedores VB criasse um fork em qualquer lugar e provasse que estão errados, isso seria muito legal. Estou feliz por ter este problema ou outro problema neste repo apontando para o projeto, e se eu twittar sua existência e progresso, se desejar.

Eu lancei as bases com o .NET Foundation para um espaço Visual Basic (possivelmente contrib, possivelmente outra coisa) para que haja uma maneira de gerenciar a propriedade e tais coisas administrativas para projetos em uma comunidade Visual Basic. No entanto, eles precisam de evidências de que há uma comunidade que terá repos fornecendo coisas que as pessoas desejam (a Fundação trabalha para evitar projetos mortos). Eu esperava que os modelos do Entity Framework fossem essa semente, mas não deu certo. Isso não é específico para VB, e é por isso que você vê coisas em repositórios pessoais: modelos VB EF em @bricelam , o catálogo de ferramentas globais em @natemcmaster e uma versão bifurcada de um analisador de linha de comando @natemcmaster enquanto trabalhamos em um novo .

Portanto, embora um projeto e um protótipo não sejam suficientes para atrair o interesse da Fundação, se surgir um projeto bem-sucedido, ele pode ser movido para a .NET Foundation.

Obrigado pelo seu esclarecimento, mas ainda não tenho certeza porque o Razor foi construído para atingir C # apenas enquanto o Roslyn pode suportar os dois !!

Eu não olhei para o código do Razor para saber se ele constrói diretamente uma árvore de sintaxe, mas supondo que sim ...

Roslyn trabalha com árvores de sintaxe bruta específicas, explícitas e diferentes para C # e VB. Por exemplo, sei-dois-pontos e chaves existem em C #, não em VB. End Sub e Handles existem no VB e não na árvore de sintaxe C #.

@KathleenDollard

Sim, eu entendo que o project blazor é experimental, mas compila para web assembly e é uma maneira mais fácil de fazer aplicativos de plataforma cruzada (compartilhando código existente no servidor e clientes, eu gosto de servidor Windows e ASP .NET, então prefiro executar um servidor que suporta a estrutura .NET completa para reutilizar nossa base de código existente).

Quanto às suas perguntas:

  1. O .NET core 3 não torna os aplicativos WinForms multiplataforma, então não adiciona muito.

  2. Estou reescrevendo para a web porque torna nossos aplicativos multiplataforma. Estamos usando um controlador ASP .NET para compartilhar o código existente, portanto, no servidor não temos problemas. Como eu disse, estamos usando nosso próprio framework, que está começando a fornecer a mesma funcionalidade em JS, mas precisamos reescrever o código do cliente novamente e testá-lo, e a IU ainda está levando pelo menos 80% do desenvolvimento Tempo.

  3. Começamos a portar nosso framework para JS antes do projeto blazor. Reescrever em C # não tornará nosso aplicativo cliente multiplataforma, exigirá direcionar o navegador de qualquer maneira ou converter para Xamarin ou qualquer outra coisa, portanto, o esforço é o mesmo.

Eu programo em C, C ++, C #, VB, JS e sei usar várias pilhas, mas temos vários membros em nossa equipe que terão dificuldade em converter para outra linguagem. De qualquer forma, o objetivo é reutilizar nossa base de código testada, não reescrevê-la. Se o blazor pudesse compilar VB em visualizações, isso nos pouparia muito tempo, só isso.

Também é estranho para os usuários entender que eles podiam compilar visões do razor antes em VB .NET com o framework completo. Parece que você deixou o VB para trás. E tudo começou com o .NET core, primeiro não foi um projeto experimental?

Para adicionar um pouco mais de contexto, estamos portando três ERPs de missão crítica, para diferentes linhas de negócios.

Saudações.

@mcurros

Obrigado por compartilhar mais sobre o seu cenário.

O motor Razor foi reescrito para ASP.NET Core e é aí que o esforço para vários idiomas não foi feito. O baixo uso da versão VB do motor Razor foi um dos fatores determinantes. E sim, a existência de Blazor torna essa decisão bastante dolorosa.

@KathleenDollard

Obrigado Kathleen por compartilhar os insights. Espero que as linguagens do .NET não comecem a competir entre si, uma das coisas mais atraentes do .NET eram as linguagens e a interoperabilidade entre elas, agora parece que não seria mais o caso. Agora não é suficiente escolher .NET como uma pilha de desenvolvimento, acho que precisaremos ser cuidadosos com as linguagens que escolheremos também. Pena, parece um passo para trás.

Na última pergunta, porém, acho que o razor foi escrito bem antes do .NET core, com páginas da web ASP .NET e webmatrix, então acho que você quer dizer que o mecanismo do razor foi reescrito no .NET core voltado para C #. Estou certo?

Boa sorte.

Olá,
Eu encontrei este post: Por que não Razor? .
O que você acha de evitar completamente o uso da sintaxe Razor em projetos ASP .NET Core e Blazor em favor de um desenvolvimento puro em C # e VB.NET? Temos certeza de que precisamos da sintaxe do Razor para desenvolver aplicativos da web que precisam emitir arquivos HTML5 e CSS?

Saudações,
Filippo.

@filippobottega

Bem, isso foi antes do blazor. O problema é que você precisa de um motor de templates no cliente, e no caso do blazor é só isso. Em blazor razor está sendo executado no navegador, não no servidor (mas pode ser executado no servidor, se necessário). Portanto, as pessoas estão tentando compartilhar código entre cliente e servidor no navegador há anos. Compartilhar o código de validação será um caso simples, mas em nosso caso, compartilhamos metadados que descrevem modelos para que os componentes possam se configurar usando esses metadados.

O Node.JS se tornou popular porque você pode compartilhar o código entre o navegador e o servidor. Então, por que não compartilhar o código .NET entre o navegador e o servidor? O Razor é compilado para uma montagem na web com seu código compartilhado, e é isso. Sim, você pode compilar, executar e distribuir seu aplicativo, mas o navegador tem melhor capacidade de plataforma cruzada e você terá como destino mais plataformas com o mesmo código. Eu também vi WPF compilado para webassembly, se você quiser ir dessa forma.

Preferimos aproveitar as vantagens dos componentes JS existentes e combiná-los com nossa base .NET, mas preferimos .NET e razor como substitutos de outros frameworks JS, como angular. É 10x mais produtivo se você sabe o que está fazendo, pelo menos para nós.

Saudações.

@mcurros Sim, muito foi retrabalhado / reescrito no ASP.NET Core (veja o modelo de pipeline como exemplo), incluindo o Razor.

@mcurros Ok, é verdade que precisamos de um mecanismo de template, mas o problema é que a sintaxe do Razor não é suportada por um designer WYSIWYG sólido.
Por exemplo, Blazor usa Bootstrap como biblioteca CSS. Há um designer interessante para o Boostrap chamado Bootstrap Studio, mas ele não oferece suporte à sintaxe Razor.
Para aplicativos de desktop WinForms, existe um bom designer WYSIWYG para projetar interfaces rapidamente, para XAML o mesmo. Existe um designer que podemos usar para criar rapidamente HTML5-CSS com visualizações de sintaxe Razor (.cshtml / .vbhtml)?

@filippobottega
Como os dispositivos que podem executar navegadores estão na ordem de 10K, acho que fazer uma ferramenta WYSIWYG precisa provavelmente não vale o esforço. A tendência atualmente é executá-lo no navegador e deixar que o navegador faça a renderização. Os exemplos do Blazor usam Bootstrap, mas o razor é um mecanismo de modelagem, você pode emitir o que quiser e a estrutura CSS / HTML que quiser. As partes interessantes são a compilação para montagem na web e o barbeador modificado para fornecer roteamento de SPA e tudo o que você precisa para construir um cliente de SPA. Além disso, se necessário, você pode renderizá-lo no servidor (para sites públicos e indexação de mecanismo de pesquisa). Eu acho muito legal.

Assim, o blazor fornece compilação de montagem da web em tempo real e executa no navegador pressionando F5. É rápido, experimente.

@mcurros Obrigado pela sua resposta. Eu concordo com você, mesmo se eu achar que a possibilidade de alterar a estrutura dos modelos arrastando e soltando usando a visualização do navegador pode ser muito útil.
Se pensar em uma visualização do desenvolvedor onde os componentes podem ser movidos, redimensionados e incorporados em outros componentes com arrastar e soltar, finalmente atualizando o modelo CSHTML.
Por exemplo, Concrete5 permite que você altere o layout em tempo real.
Deixe-me saber se você acha que um "modo de design" será viável no futuro.

Cumprimentos,
Filippo.

Não acho que será um futuro para VB:
A nova estratégia da Microsoft para encerrar a coevolução de C # e Visual Basic o tornará ainda menos respeitado pelos desenvolvedores
C # é o futuro para os desenvolvedores .Net, então é hora de limitar o uso do Visual Basic para sistemas legados locais

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 milhões de linhas de código, metade das quais ainda está em uso, agora devem ser reescritas. O VB.Net foi morto devido ao completo desconhecimento da última geração de programadores da própria linguagem (e de todos os idiotas que ficavam comparando-a ao Visual Basic - Maçãs com Laranjas) com comparações absurdamente falsas de desempenho e outros vetores. RIP VB.Net e os milhões de desenvolvedores que perderão seus empregos como resultado.

Como @DamianEdwards , transferi o exemplo "ASP.Net Core Web Application" de C # para VB. Ele está (com sucesso) usando arquivos Razor .cshtml em um projeto VB. Garanti que ele seja compatível com ASP.Net Core 2.1. Você pode encontrá-lo aqui:

https://github.com/mevdschee/aspnetcorevb

O exemplo de .cshtml para visualizações e o resto do aplicativo em VB.NET , mas será muito legal usar .vbhtml para visualizações 😃

Não sei o que a Microsoft tem em mente, ter uma linguagem de programação como o VB em suas mãos, ser capaz de se apropriar de áreas do lado do cliente e do lado do servidor na Web

cliente: vbscript
servidor: vb

Polir VB é algo que te beneficiaria, é compreensível, compreensível e adaptável, dói muito e nostalgia saber que vb.net não está na web, mas a culpa é sua e focar apenas em um

Tradução do Bing:
Não sei se tem Microsoft na cabeça, tendo em mãos uma linguagem de programação como VB podendo se apropriar na Web das duas áreas do lado do cliente e do lado do servidor

Cliente: VBScript
Servidor: VB

Polir VB é algo que o beneficiário, é compreensível, compreensível e adaptável, dá realmente muita dor e saudade de saber que vb.net não está na web, mas a culpa é sua e focar apenas em um

Isso permitirá que VB.NET continue a ser suportado para adicionar os recursos que já foram adicionados em C #, mas novamente não vbhtml 😕

@hishamco Não. Embora eu compartilhe seu :( o mecanismo do Razor suporta apenas C #.

O motor Razor suporta apenas C #

Isso é o que eu quis dizer 😄

Índice Tibor mostra VB.NET crescendo, de qualquer forma, precisamos de vb razor

Como @DamianEdwards , transferi o exemplo "ASP.Net Core Web Application" de C # para VB. Ele está (com sucesso) usando arquivos Razor .cshtml em um projeto VB. Garanti que ele seja compatível com ASP.Net Core 2.1. Você pode encontrá-lo aqui:

https://github.com/mevdschee/aspnetcorevb

@mevdschee Estou curioso para saber o processo pelo qual você passou para portá-lo para o VB.NET, já que o modelo de projeto não está disponível no Visual Studio / sem suporte no VSCode. Como você fez isso?

@Webbarrr Converti o código C # em VB manualmente e usei o modelo C # do Visual Studio para começar.

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

Eu concordo que vbhtml é uma causa perdida, porque o código VB.NET não se encaixa bem na sintaxe HTML, CSS e JavaScript! Em vez disso, peço vbxaml!
Postei esta sugestão no repositório VB.NET meses atrás:
https://github.com/dotnet/vblang/issues/329
Estas são as citações:

Deixe o VB.NET navegar na nova onda do WebAssembly:
Depois de WebAssembly e Blazor, a oportunidade representa a si mesma: é lógico agora escrever XAML em vez de HTML5 (as diferenças são mínimas) e escrever VB.NET em vez de script Java (da mesma forma que C # substitui Java agora no Blazor).
Já existe um projeto chamado Ooui tentando fazer isso em C #.
Acho que o VB.NET deveria fazer o mesmo, e ter um projeto para desenhar páginas ASP.NET com código XAML e VB.NET, aproveitando o trabalho feito no SilverLight, Blazor e Ooui. Se começar agora, pode crescer de forma constante, em vez de esperar que Blazor e Ooui se estabilizem e o MS diga:
Desculpe, será caro para o VB.NET recuperar o atraso!

O VBlazor (.vbxaml) fará com que os desenvolvedores de desktop com experiência em VB.NET e WPF / UWP migrem para o ASP.NET sem problemas.

IMHO usando XAML ou linguagem de modelos como Fluid deixará todos felizes, porque o Razor foi escrito apenas para C #

O VBLazor seria semelhante ao uwp / wpf design view, mas com dois arquivos code-behind, um para códigos vb.net de servidor e outro para códigos de cliente (script), com a capacidade de usar o padrão MVVM para organizar grandes projetos. O XAML será compatível com html5, os estilos Xaml serão compilados para CSS e os códigos de script VB.NET serão compilados para WebAssembly.

Estou encerrando isso porque, infelizmente, está bastante claro que não há intenção de adicionar modelos de projeto VB.NET para ASP.NET Core.

@reduckted @muratg @ tb-mtg @brunojuliao @rynowak @CheungTatMing @VBDotNetCoder @ simonmilne80 @NatShaw @SrqComputerguy @ sreenathGanga1988 @mcurros @filippobottega @hanespre19dega @mrishjohnr @beefyubercheog @ beefyuber86ega @mrishjohnr @ beefyuber86ega @ beefyuber86ega @mrjodsega @beefyuberega @mrishcheog @beefy86ega @mrjohnr @beefy86ega @mrjohnr @hanspre19ega @mrjodsega @ beepre19e @mrjohnrWeb

Finalmente: Um exemplo funcional do VB.NET ASP.NET MVC Core Razor!
https://github.com/VBAndCs/VB.NET-Razor
Implementei um VBRazorViewEngine simples no projeto VbRazor.
Para usar VBRazorViewEngine no projeto, adicionei essas duas instruções ao método Startup.ConfigureServices:
`` `VB.NET
services.AddTransient (Of IConfigureOptions (Of MvcViewOptions), VBRazor.VBRazorMvcViewOptionsSetup) ()
services.AddSingleton (Of 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

A propriedade Razor usa os literais xml para compor o código HTML e o retorna como uma string. Exemplo:
`` `VB.NET
Importa VbRazor

Classe pública IndexView
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

Fim da aula


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

Isso é tudo!! Se você executar o projeto, verá esta página da web:
VBRazor

Isso foi realmente fácil, mas precisa de mais trabalho, então espero que você comece a contribuir com este projeto para torná-lo uma ferramenta realmente produtiva!
A primeira coisa a fazer é criar um modelo VB.NET para ASP.NET MVC Core. Tive que criar um projeto C # e então convertê-lo para VB!

A segunda coisa a fazer é adicionar suporte intellisense para atributos html em literais xml em VB!

O mecanismo de visualização da verdade precisa analisar uma espécie de modelo como o que vimos no Razor ou Markdown .. etc, mas o que você fez é fácil porque a marcação final gerada a partir do código por trás do qual é o que as classes geradas do Razor fizeram

@hishamco
Fiz isso em algumas horas, graças aos literais VB XML, que está quase esquecido! Eu mesmo me esqueci disso até poucas semanas, quando estava tentando invocar alguma nova sintaxe para sugerir, então eu escrevi e o editor a completou com a tag de fechamento :) No entanto, há muito a fazer para tornar esta ideia um produto completo.

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

O literal Xml é um recurso muito bom que o VB só possui. Em relação ao vbhtml, ele precisa de tempo e esforços e sou um dos caras interessados ​​do passado, espero que possamos começar logo

Olá a todos,
Este é um VB Razor funcional (Vazor). Diverta-se:
https://github.com/VBAndCs/Vazor

Olá a todos,
Apoie esta proposta https://github.com/aspnet/AspNetCore/issues/9270
Pode ser uma alternativa fácil para criar páginas vbhtml.

@VBAndCs , evite postar em questões antigas encerradas. Tentamos manter esse rastreador de problemas para bugs e solicitações de recursos no ASP.NET Core e minimizar outras discussões.

@Eilon
Desculpe, mas esta é uma solicitação de recurso que ainda não existe. Estar fechado não deve incomodá-lo, mas ainda está aparecendo na pesquisa do Google, por isso é importante manter todas as informações relacionadas sobre este tópico juntas.
De qualquer forma, esta é minha última resposta neste tópico.
obrigado

@VBAndCs , por favor, não desanime com o tom autoritário de

@mevdschee
Obrigado por seu apoio :). Posso imaginar a enorme pressão que @Eilon está sob a pressão de centenas de notificações por dia, bugs a corrigir, discussões a fazer, perguntas a responder e sugestões a rejeitar: dancing_men:
Portanto, vou me referir a esse tópico em minhas novas propostas (que espero que continuem chegando até que o VB.NET restaure seu lugar correto :)).
Espero que Eilon discuta propostas importantes ou pelo menos as deixe abrir por um tempo para permitir que a comunidade as discuta, em vez de pular imediatamente para o botão Fechar.
Obrigado novamente @mevdschee e desculpe @Eilon :)

Eu tenho seguido este tópico por um longo tempo, pois uma solução completa adequada realmente deveria estar no mapa da estrada sem ter que ser forçado. Fiquei um pouco desapontado ao ver, depois do trabalho árduo realizado por @VBAndCs, que @Eilon tentaria impedir que alguém tentasse ajudar a resolver o problema para tantas pessoas! Eu posso entender que há muita pressão, porém o fato de as pessoas ainda estarem acompanhando isso mostra que é importante para muitas pessoas! Mantenha o bom trabalho :)

Olá a todos,

Incentivamos fortemente a atividade e os recursos da comunidade, mas não podemos aceitar certas solicitações de recursos ou correções de bugs porque não são uma prioridade alta o suficiente para implementação. Isso inclui até o caso em que há uma solicitação pull que inclui testes e documentação. Fazer qualquer alteração de qualquer tamanho tem um custo, incluindo custo de longo prazo, e temos que equilibrar isso com todos os outros trabalhos potenciais que estamos considerando. Quando se trata de mecanismos de visualização, estamos 100% comprometidos com o mecanismo de visualização Razor com suporte para C # e uma ótima experiência de editor no Visual Studio, Visual Studio para Mac e Visual Studio Code.

Acreditamos que haja uma grande oportunidade aqui para pessoas como @VBAndCs criarem projetos adicionais que funcionem com o ASP.NET Core e se integrem de várias maneiras. Estamos felizes em nos vincular a esses projetos, tendo pessoas enviando PRs para arquivos leia-me, como o leia-me do

Obrigado,
Eilon

Para @ simonmilne80 , @mevdschee e qualquer pessoa interessada:
Eu adicionei um exemplo funcional de páginas zml ao repo, então, por favor, vamos levar a discussão para este tópico: https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
e dê a @Eilon alguns momentos de paz :)

BTW, estamos querendo adicionar uma menção a Vazor em um futuro ASP.NET Community Standup . Você tem uma postagem de blog que possamos consultar, além do repositório GitHub?

@Eilon
Desculpe por atrasar minha resposta. Eu precisava terminar meu trabalho primeiro e escrever um arquivo leia -
ZML 1.0 agora tem seu próprio repo e NuGet .
Eu aprovaria se você mencionasse ZML, porque é independente da linguagem (o repo contém um exemplo de projeto com duas versões c # e VB, e ambos usam os mesmos arquivos .zml.
Obrigado.

Estou pensando em converter meu aplicativo VB.NET WebForms em páginas .NET Core Razor. Se for verdade que o VB não terá suporte, então para qual caminho ASP.NET moderno devo migrar? Reescrever o aplicativo em C # não é uma opção.

@Gruski se há muito código VB.NET que é código de "biblioteca" - ou seja, nem mesmo específico para WebForms - então tudo funciona muito bem no mundo .NET Core / Razor Pages / Blazor. É a parte WebForms vs. Razor (e Blazor) que dá muito mais trabalho.

Acabamos de lançar uma prévia de um e-book para ajudar os desenvolvedores a migrar de WebForms para Blazor:

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

Portanto, pode ser possível manter alguns de seus aplicativos em VB e, então, apenas a IU precisaria ser C #.

Portanto, pode ser possível manter alguns de seus aplicativos em VB e, então, apenas a IU precisaria ser C #.

Você também pode usar um projeto VB.NEt para a IU. Apenas os arquivos cshtml conterão pedaços C #. Se quiser evitar o código C #, você pode usar literais xml em VB.NEt para projetar a IU como fiz em meu projeto Vazor:
https://github.com/VBAndCs/Vazor-DotNetCore2
Anthony Green levou isso a outro nível, como você pode ver em seus últimos tópicos em seu blog:
https://anthonydgreen.net/
Ou aqui:
https://github.com/dotnet/vblang/issues/483
Também sugeri usar comandos de tag XML para evitar C # e VB e ter um XML Razor puro (chamei de ZML):
https://github.com/VBAndCs/ZML

Embora nosso projeto seja um projeto de WebForms, não o estamos mais usando como pretendíamos originalmente. Este era um aplicativo corporativo antigo, mas grande, que ao longo dos anos foi convertido para usar exclusivamente a estrutura do lado do cliente Vue.js chamando WebMethods que residem em cada uma das páginas de código .aspx. Portanto, não há: nenhum componente de servidor (nenhum runat = "servidor" nada), nenhum estado de exibição, nenhuma postagem de página inteira (nenhum elemento "formulário"). Além do método Load que inicializa dinamicamente alguns componentes do lado do cliente Vue, o código por trás só contém WebMethods.

Com isso em mente e a necessidade de mudar para o .NET core, para qual nova tecnologia ASP.NET devo migrar o projeto se quiser me afastar dos WebForms? MVC para mim não faz sentido, pois Vue.js já tem o padrão MVC no lado do cliente, que na minha opinião é mais elegante, então por que eu precisaria dele no servidor? O Blazor também não faz sentido porque isso implicaria em reescrever toda a IU novamente.

@Gruski Eu recomendaria o Razor Pages. É extremamente fácil começar com: Basta criar uma pasta Pages em seu aplicativo ASP.NET Core e começar a adicionar arquivos .cshtml a ela. Cada página é essencialmente um URL, e você pode inserir HTML arbitrário nela e, em seguida, adicionar qualquer C # que desejar para a lógica do servidor.

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

@Eilon As páginas do Razor têm código para colocar WebMethods? Caso contrário, onde os WebMethods seriam colocados? Olhando para ele, parece que ainda usa uma versão simplificada do padrão MVC do lado do servidor nos bastidores, que é redundante ao usar o Vue. Também não há suporte a VB no Razor Pages.

As páginas do Razor não suportam WebMethods. Eu recomendaria usar MVC para esses métodos. Você pode misturar Razor Pages e MVC no mesmo aplicativo.

@Gruski Eu tenho viajado e apenas me atualizando.

Se você tem sua IU em Vuew.js, pode apenas usar ASP.NET Core MVC / WebAPI? Isso funciona bem. Embora este artigo inclua um pouco o Angular, ele mostra a técnica geral: https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern- aplicativos da web /

Existem duas áreas de problemas com suporte:

  • Razor não é suportado para Visual Basic, embora, conforme apontado, @VBAndCs e @AnthonyDGreen tenham desenvolvido uma solução potencialmente melhor para Visual Basic.
  • Não há modelos para ASP.NET WebAPI.
Esta página foi útil?
0 / 5 - 0 avaliações