Aspnetcore: Поддержка Visual Basic .NET (VB.NET) в ASP.NET Core

Созданный на 3 янв. 2018  ·  91Комментарии  ·  Источник: dotnet/aspnetcore

За последние несколько лет было задано много вопросов о поддержке VB.NET в ASP.NET Core. Если вы последуете им, все они заведут в тупик - либо закрываются без реального ответа, либо перемещаются в другие репозитории, не связанные с ASP.NET Core (например, где-то в организации dotnet ).

За это время были разговоры о поддержке VB. Совершенно понятно, что ASP.NET Core не поддерживал VB с самого начала. Проект претерпевал множество быстрых изменений, поэтому имело смысл сначала сосредоточиться на C #, а позже добавить поддержку других языков. Но идея поддержать VB, казалось, потерялась.

Вот краткий график:

16 декабря 2014 г .:

Мы планируем иметь точки расширяемости, чтобы другие языки, такие как VB, F # и т. Д., Можно было добавлять через форму пакета поддержки или тому подобное.
https://github.com/aspnet/Home/issues/236#issuecomment -67046039

25 апреля 2015 г .:

Всем привет, хорошие новости! Мы объявили о планах поддержки VB в ASP.NET 5 / DNX!
https://github.com/aspnet/Home/issues/236#issuecomment -96003847

Сегодня мы рады объявить, что ASP.NET 5 будет иметь полную поддержку Visual Basic (как инструментальные средства, так и среда выполнения, включая кроссплатформенную поддержку среды выполнения).
https://blogs.msdn.microsoft.com/webdev/2015/04/24/making-it-better-asp-net-with-visual-basic-14/

19 ноября 2016 г .:
Поддержка VB исчезает из дорожной карты:

 |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 декабря 2017 г .:

нет планов добавить шаблон VB для ASP.NET Core
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

Поддержка VB, похоже, ушла с

«Пока не работает, но мы планируем разрешить VB»

к

"Будет полная поддержка VB!"

к

«VB не поддерживается, но тсс, никому не говори».

Итак, мой первый вопрос:

Что произошло и почему об этом не было объявлено или обсуждено с сообществом?

Кажется странным перейти от объявления о поддержке VB.NET в ASP.NET Core в официальном сообщении блога к тому, чтобы вообще не поддерживать его без каких-либо отзывов. Было ли объявление об этом? Если и был, то уж точно не получил широкого распространения.

Мой следующий и _ более важный_ вопрос:

Что может сделать сообщество VB, чтобы добавить поддержку VB.NET в ASP.NET Core?

Есть ли шаблоны проектов, которые мы можем написать?
Есть ли генераторы кода, которые мы можем реализовать?
Что мы можем сделать, чтобы ASP.NET Core был таким же привлекательным для разработчиков VB, как и для разработчиков на C #?


Я собрал простое приложение ASP.NET Core (ссылка удалена, потому что репо устарело) в VB, создав консольное приложение .NET Core, отредактировав файл проекта и скопировав классы, созданные из ASP.NET Core C # шаблон. Он отлично работает, и хотя он очень простой, я не вижу причин, по которым VB.NET не поддерживается.

Самый полезный комментарий

+1
Visual Basic всегда был самым важным языком в мире .NET. VB по-прежнему многие поклонники и пользуются сегодня! Хотя многие люди работают над проектом C # на своем рабочем месте, но я считаю, что многие люди, такие как я, любят использовать VB в собственном проекте.

Все 91 Комментарий

Копия @DamianEdwards

Я давно зарегистрировал проблему, чтобы использовать VB вместе с .cshtml в репозитории Razor , с тех пор я не видел никаких действий 😟.
Несколько недель назад я видел отличный пример из @DamianEdwards, демонстрирующих hyprid VB ASP.NET основного приложения здесь

В дополнение к отличному суммированию @reduckted в документации Microsoft по синтаксису Razor для ASP.NET Core (по состоянию на 18.10.2017) все еще есть многочисленные ссылки на Visual Basic и использование файлов .vbhtml:

Это ограничение не применяется к файлам .vbhtml Razor, поскольку синтаксис Visual Basic помещает круглые скобки вокруг параметров универсального типа вместо скобок.

Однако ScottAddie @ MSFT опубликовал комментарий 21.07.2017:

ASP.NET Core еще не поддерживает VB.NET. На данный момент вам нужно придерживаться собственно ASP.NET.

Будут ли файлы Visual Basic / vb.net / .vbhtml включены в .Net Core? И если да, то когда ??

Как мы можем помочь в реализации этой поддержки? Я бы хотел увидеть поддержку VB.Net и F #!

Я отправил PR для удаления ссылок VBHTML из документов ASP.NET Core: https://github.com/aspnet/Docs/pull/5201

В настоящее время нет планов по внедрению поддержки VBHTML в ASP.NET Core.

У нас есть шаблоны F # для ASP.NET Core, которые устанавливаются как часть .NET Core SDK.

@Eilon В настоящее время нет планов по внедрению поддержки VBHTML в ASP.NET Core.

Лично меня не беспокоит поддержка VBHTML, потому что я не использую страницы Razor и не собираюсь этого делать. Как упоминал @AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626), нет смысла добавлять к нему поддержку VB, потому что он редко использовался в MVC 5, и, Я полагаю, потребовалось бы очень много работы, а не большой выгоды.

@Eilon У нас есть шаблоны F # для ASP.NET Core, которые устанавливаются как часть .NET Core SDK.

Хорошо, но я не совсем уверен, о чем вы здесь говорите. Во всяком случае, разве это не только подтверждает тот факт, что _должны_ быть шаблоны VB?

Разве шаблоны F # не были созданы сообществом F #? Если команда Microsoft не будет создавать шаблоны VB, то почему шаблоны VB не могут быть созданы сообществом VB?

@reduckted вопрос сводится к спросу на него и его стоимости - как первоначальной, так и текущей стоимости. Как отмечалось ранее, спрос был очень низким. Стоимость создания начального набора шаблонов может быть невысокой, но кто-то должен их поддерживать. С F # у нас в Microsoft есть люди, которые привержены их обслуживанию. В настоящее время у нас нет таких людей для VB.

Кроме того, одним из ограничений шаблонов F # является то, что они больше фокусируются на стороне API; то есть без Razor или CSHTML (потому что нет FSHTML). Что касается пользователей VB, я предполагаю, что большинство пользователей, использующих VB, будут ожидать опыта VBHTML для MVC, а затраты на его создание огромны - месяцы и месяцы работы. Поэтому мне не ясно, будет ли добавление ограниченных шаблонов VB особенно ценным.

@Eilon С пользователями VB я предполагаю, что большинство пользователей, использующих VB, будут ожидать опыта VBHTML для MVC ...

Вы можете поговорить с @AnthonyDGreen , потому что это прямо противоположно тому, что он сказал в комментарии, на который я ранее ссылался (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626). Я процитирую это на этот раз (выделено мной):

Механизм бритвы .vbhtml из MVC 5 не был перенесен на Core в первую очередь потому, что менее 1% всех веб-проектов VB использовали его после 5 версий.

@reduckted - интересно, это для меня новость. Я вспоминаю дни веб-форм, которые изначально были разработаны с концепциями, которые были знакомы разработчикам VB (в частности, VB6), а веб-формы были очень ориентированы на HTML (вроде как), поэтому я подумал, что VBHTML будет самый интересный для этой группы людей. Опять же, это анек-данные 15-летней давности 😄

Кстати, мы не сказали, что никогда не собираемся этого делать - просто в настоящее время это не входит в планы.

Я фанат VB 😄, и я ожидаю, что .vbhtml будет нестандартным, гибридный подход, о котором я упоминал ранее, недостаточен для всех парней из VB, но в некоторых случаях это нормально. Мой вопрос заключается в том, чтобы повторно реализовать Razor для генерации VB вместо C #, это будет работать, или MVC тесно связан с cshtml C #?

@hishamco К сожалению, Razor был реализован так, что VB и C # были разными путями. Я поговорил с несколькими людьми, и это довольно большой проект.

@KathleenDollard Существуют и другие проекты .NET Core, которые поддерживают настраиваемые ViewEngines для типов файлов .md .

Конечно, мы можем заставить его работать с файлами .vbhtml razorpages, используя .vbproj с <Project Sdk="Microsoft.NET.Sdk.Web"> .

@ tb-mtg Это все с открытым исходным кодом, если вы хотите изучить его и посмотреть, что сделали эти проекты. Люди, которые написали это, сказали мне, что это были большие усилия. Объем усилий и чрезвычайно низкая степень внедрения vbhtml в более ранних версиях MVC делают его трудным для продажи.

@KathleenDollard. Я повторю свой вопрос еще раз. Если я заново реализую Razor для выдачи VB вместо C #, это будет работать, или MVC будет тесно связан с cshtml C #?

@hishamco , это хороший вопрос для @rynowak . Райан?

Механизм компиляции среды выполнения MVC использует инфраструктуру Roslyn для компиляции C # и ожидает / требует, чтобы настройки системы проекта C # были переданы через .deps.json . MVC не имеет тесной связи с создаваемым кодом, а скорее предоставляет инфраструктуру для компиляции представлений C # во время выполнения с использованием параметров, созданных проектом C #.

Любой, кто хочет компилировать VB во время выполнения, должен будет реализовать механизм представления, который это делает.

Спасибо @rynowak за разъяснения

использует инфраструктуру Roslyn для компиляции C # и ожидает / требует, чтобы настройки системы проекта C # передавались через .deps.json

Если я реализую механизм представления VB или клонирую его с модификацией на C #, какие настройки мне нужно передать в .deps.json чтобы это произошло?

+1
Visual Basic всегда был самым важным языком в мире .NET. VB по-прежнему многие поклонники и пользуются сегодня! Хотя многие люди работают над проектом C # на своем рабочем месте, но я считаю, что многие люди, такие как я, любят использовать VB в собственном проекте.

@AnthonyDGreen @KathleenDollard

Механизм бритвы .vbhtml из MVC 5 не был перенесен на Core в первую очередь потому, что менее 1% всех веб-проектов VB использовали его после 5 версий.

Что же тогда используют остальные 99%?

Я полагаю, что Angular или другие подобные интерфейсные библиотеки. Вот что я использую.

На самом деле это именно то, что я планирую сделать с нашими новыми веб-проектами, перейдя на Angular с ASP.Net MVC Razor, мне нужно сделать 4 новых веб-проекта в этом году, так что если кто-то будет считать .. LOL

VB был популярным языком уже много лет! Как компания, у нас, безусловно, есть много фрагментов кода, которые мы не хотели бы переписывать на C #. Я уверен, что есть много старых школьных приложений веб-форм, которые должны быть переписаны, особенно с учетом вступающих в силу новых правил ЕС, это будет означать, что VB будет очень востребован! Я нахожу удивительным, что Microsoft дует так горячо и холодно на VB, в одну минуту он разрабатывается на одном уровне, а затем его бедный родственник! Да, появляются новые языки и фреймворки, но не отказывайтесь от старых популярных!

Рад, что его здесь отслеживают, надеюсь, тогда будут какие-то действия.

Все признаки (ласковые слова) от MS заключаются в том, что они планируют заглушить VB.NET и / или ничего не делать и ждать, пока другие запишут недостающие биты. Я закончил их ласковые слова, я выхожу из разработки VB.NET.

Я просто надеюсь, что когда Microsoft приобретет GitHub, он не получит того же лечения, что и VB.Net (оставленный умирать с пустыми обещаниями полной поддержки).

@NatShaw Я

Я не уверен, что вы имеете в виду, говоря о том, что планируете упростить VB.NET, но планов на это нет. Языковая стратегия Visual Basic остается неизменной.

Razor для VB проблематично. Для основного рабочего процесса разработки WebAPI является прекрасным рабочим процессом для VB, как показано здесь. (кроме шаблонов)

@ tb-mtg VB.Net не оставлен умирать. Есть постоянные улучшения - небольшие улучшения в языке и работа как IOperation, чтобы упростить поддержку Visual Basic в анализаторах Roslyn для поддержки VB во всей экосистеме. Верно, что VB фокусируется на сценариях, в которых он уже хорош, и на соответствующих новых сценариях, а не на всех новых сценариях. Например, Скотт Хантер уже объявил, что VB.Net будет работать с .NET Core 3.

@KathleenDollard Pieces уже отсутствуют - .Net Core 2.x - где все шаблоны VB? Обнуляемые ссылочные типы? Только C #. Планы на будущее большие, но VB уже чего-то не хватает.

Это тема для Microsoft создать отличную технологию и отказаться от нее. Они отказываются от VB, языка, на котором построена компания, и становятся магазином только на C #. Я ожидаю, что при внедрении новой технологии будут поддерживаться все языки. К сожалению, эта новая Microsoft не так хорошо справляется с задачей, как 15 лет назад, поддерживать равноправие партнеров на всех языках. Это очень плохо, у меня есть десятки тысяч строк VB, и я надеялся перейти с ним на кроссплатформенную платформу с использованием ядра asp.net. Теперь с заброшенными веб-формами в ядре asp.net и без VB я застрял. Я могу сменить язык или ??. Если я приложу усилия, изменить язык. Это будет что-то другое, а не Microsoft, это будет язык, который был создан для поддержки всех платформ. Я устал, когда меня сбрасывают со счетов и увольняют за то, что я очень хороший разработчик VB. Возможно, пришло время оставить мою компанию и код и покинуть Microsoft после 30 лет использования и продажи платформ и языков Microsoft. Снисходительное отношение руководства .net к VB становится слишком большим. Здесь все еще так много из нас, VBers, которые в наши дни очень разочарованы в Microsoft. Было бы лучше, если бы VB был сделан с открытым исходным кодом, чтобы сообщество могло продвигать его на всех платформах.

@SrqComputerguy Они отказываются от VB

Неправильно. @KathleenDollard буквально _дн_день назад_ в _ этом самом потоке_ сказала, что "языковая стратегия Visual Basic остается неизменной". (комментарий)

@SrqComputerguy Это очень плохо, у меня есть десятки тысяч строк VB, и я надеялся перейти с ним на кросс-платформу, используя ядро ​​asp.net. Теперь с заброшенными веб-формами в ядре asp.net и без VB я застрял.

Веб-формы - это старая технология (практически древняя по стандартам программного обеспечения), поэтому неудивительно, что она не поддерживается в .NET Core (с VB.NET _ или _ C #). См. Это сообщение в блоге ранее на этой неделе об использовании VB.NET с ASP.NET Core.

@SrqComputerguy Если я это будет язык, который был создан для поддержки всех платформ .

VB.NET _is_ кроссплатформенный, только не с веб-формами.

@SrqComputerguy Было бы лучше, если бы VB был сделан с открытым исходным кодом, чтобы сообщество могло продвигать его на всех платформах.

😕 Это так. https://github.com/dotnet/vblang

@reduckted В C # есть шаблон «Веб-приложение ASP.NET Core», а в VB его нет. Это правильно? Ссылочные типы, не допускающие значения NULL - не для VB.

Стратегия уже заключается в том, что В.Б. больше не является гражданином первого класса - без изменений! Ссылки в статье

  • VB 15 поставляется с подмножеством новых функций C # 7.0
  • Мы сосредоточим инновации на основных сценариях и областях, в которых популярен VB.
  • Однако VB 15 не имеет таких функций, как is-выражения, исходящие переменные и локальные функции, которые, вероятно, принесут больше вреда, чем пользы для удобочитаемости VB, и значительно увеличат количество его концепций.

Закончилось. Они принижают его.

Старые технологии не означают, что они бесполезны. WebFroms отлично подходят для бизнес-приложений, где нам не нужна SEO, но нужна кроссплатформенность. WebForm делает внешний вид версии winform похожей и действует аналогично. Это также имеет много бизнес-сценариев, которые хорошо работают. Не все должно быть приложением C # MVC angular.js и должно быть. Тем не менее, это единственные инструменты, которые MS улучшает на данный момент.

Почему страницы razor (которые являются обновленными страницами asp для .net) получают любовь C # в ядре, а не VB?

MS даже купила проект Mono, так что теперь он сначала поддерживает C #, и только если они получат одобрение, VB получит там немного любви.

MS любит Python больше, чем VB. Python - это скорее кроссплатформенный язык, чем C # или VB, и именно в этом VBer, вероятно, пойдет в будущем.

Печально, что MS полагается на язык, который все еще не знает, как сказать конец строки без символа;

Есть ли у MS вообще команда VB? У них нет веб-присутствия. Для продвижения нам придется искать в другом месте.

Это было хорошо, пока длилось. VB RIP.

Привет,

Может ли кто-нибудь в Microsoft пересмотреть усилия по компиляции vb в виде бритвы (ядро .net)? Я думаю, что проект blazor позволяет по-новому поделиться большим количеством существующего кода в vb для создания новых веб-приложений.

VB .NET снова стал популярным, потому что вы можете делать то же самое, что и с C #. Я думаю, что если оставить vb позади, вы фактически положите конец его популярности.

Мы переносим очень большое приложение Winforms на VB в веб-приложение. Мы на 50% переписываем наш фреймворк на JS, но с Blazor это будет быстрее, чище и мы сможем поделиться большим количеством существующего кода. Было бы здорово, если бы мы могли также кодировать представления с помощью VB вместо C #. Не все - MVC и бритва.

Так, может быть, фокусировка на блейзере уменьшит усилия?

После того, как мне пришлось работать с современным и устаревшим кодом VB в течение нескольких лет, я не могу дождаться, когда умрет многословие. Я думаю, что для Microsoft разумно сосредоточиться на одном стиле языков (C).

@mcurros

Поддержка бритвы была рассмотрена и пересмотрена.

Хотя это очень увлекательно, сейчас Blazor - это экспериментальная разработка, без планов по продукту. Я согласен с тем, что если Blazor станет продуктом, стоит пересмотреть историю VB, и я ожидаю, что это произойдет. Приведет ли это к изменению стратегии в отношении поддержки VB, я не знаю.

Три вопроса к вам:

  • Приводят ли объявления о переходе WinForms к .NET Core 3 к пересмотру решения о переносе кода WinForms?

  • Вы переписываете для Интернета. Используете ли вы серверную часть VB WebAPI следующим образом: объединение Angular, Visual Basic и .NET Core для разработки современных веб-приложений ?

  • Вы используете JS, а это значит, что часть вашей команды эффективно использует язык фигурных скобок. По каким причинам вы не переходите на C #?

Нет ничего, что делается исключительно в C #, чего нельзя было бы сделать в VB. MS производит преобразователи IL. Это вопрос воли.

Вот вам вопрос. Если у вас есть большое количество бизнес-приложений с веб-версией .net 4.5.2, которые выглядят и действуют как настольная версия, как MS предложит им перейти на кроссплатформенную платформу.

Так официально ли, что MS приглушает идею включения разработчиков VB в волну Asp.net Core и не заинтересована в том, чтобы тратить на это ресурсы?

@ sreenathGanga1988 Мы объявили, что в настоящее время нет планов по поддержке Razor в .NET Core на Visual Basic.NET. Поддерживается WebAPI, который находится в ASP.NET Core как часть MVC. Не поддерживается только Razor. Движок Razor сложен и был создан для одного языка.

@KathleenDollard, вы можете создать VBHTML.Contrib чтобы поклонники VB могли внести свой вклад в создание бритвенного движка, используя текущий Razor Engine для поддержки VB.

Люди, написавшие новую версию Razor, считают, что включить Visual Basic очень сложно, потому что он не был разработан для нескольких языков. Я не смотрел код, но буду доверять мнению этих людей. Исходя из этого, я не собираюсь создавать форк.

Однако не зря ASP.NET является открытым исходным кодом. Если бы группа разработчиков VB создала где-нибудь форк и доказала, что они ошибаются, это было бы довольно круто. Я рад, что эта проблема или другая проблема в этом репо указывает на проект, и если я напишу в Твиттере о его существовании и прогрессе, если это необходимо.

Я заложил основу .NET Foundation для пространства Visual Basic (возможно, Contrib, возможно, что-то еще), так что есть способ управлять владением и такими административными вещами для проектов в сообществе Visual Basic. Однако им нужны доказательства того, что существует сообщество, у которого будут репозитории, предоставляющие то, что нужно людям (Фонд работает, чтобы избежать мертвых проектов). Я надеялся, что шаблоны Entity Framework станут тем семенем, но это не очень хорошо. Это не относится к VB, и именно поэтому вы видите вещи в личных репозиториях: шаблоны VB EF в @bricelam , глобальный каталог инструментов в @natemcmaster и разветвленную версию парсера командной строки @natemcmaster, пока мы работаем над новым. .

Итак, хотя проекта и прототипа недостаточно, чтобы заинтересовать Фонд, в случае успеха проекта его можно перенести в .NET Foundation.

Спасибо за разъяснения, но все же я не уверен, почему Razor создан только для C #, в то время как Roslyn может поддерживать их обоих !!

Я не смотрел код Razor, чтобы узнать, строит ли он напрямую синтаксическое дерево, но если предположить, что ...

Roslyn работает с конкретными, явными, необработанными синтаксическими деревьями, которые отличаются для C # и VB. Например, двоеточие и фигурные скобки существуют в C #, а не в VB. End Sub и Handles существуют в VB, а не в синтаксическом дереве C #.

@KathleenDollard

Да, я понимаю, что проект blazor является экспериментальным, но он компилируется в веб-сборку, и это более простой способ делать кроссплатформенные приложения (совместное использование существующего кода на сервере и клиентах, мне нравится сервер Windows и ASP .NET, поэтому я предпочитаю запускать сервер который поддерживает полную платформу .NET для повторного использования существующей базы кода).

Что касается ваших вопросов:

  1. .NET core 3 не делает приложения WinForms кроссплатформенными, поэтому не добавляет слишком много.

  2. Я пишу для Интернета, потому что это делает наши приложения кроссплатформенными. Мы используем контроллер ASP .NET для совместного использования существующего кода, поэтому на сервере у нас нет проблем. Как я уже сказал, мы используем нашу собственную структуру, которая начинает предоставлять те же функции в JS, но нам нужно снова переписать клиентский код и протестировать его, а пользовательский интерфейс все еще занимает не менее 80% разработки. время.

  3. Мы начали переносить наш фреймворк на JS до того, как project blazor. Переписывание на C # не сделает наше клиентское приложение кроссплатформенным, для этого все равно потребуется настроить таргетинг на браузер или преобразовать в Xamarin или что-то еще, поэтому усилия будут такими же.

Я программирую на C, C ++, C #, VB, JS и знаю, как использовать несколько стеков, но у нас есть несколько членов в нашей команде, которым будет трудно перейти на другой язык. В любом случае, смысл в том, чтобы повторно использовать нашу протестированную базу кода, а не переписывать ее. Если бы Blazor мог компилировать VB в представлениях, это сэкономило бы нам много времени, вот и все.

Также пользователям странно понимать, что они могли раньше компилировать представления бритвы в VB .NET с полной структурой. Похоже, вы оставили VB позади. И все началось с ядра .NET, разве сначала не был экспериментальный проект?

Чтобы добавить немного больше контекста, мы переносим три критически важных ERP для разных сфер бизнеса.

С уважением.

@mcurros

Спасибо, что поделились своим сценарием.

Движок Razor был переписан для ASP.NET Core, и здесь не было предпринято усилий для нескольких языков. Одним из движущих факторов было низкое использование версии VB двигателя Razor. И да, существование Blazor делает это решение довольно болезненным.

@KathleenDollard

Спасибо, Кэтлин, за то, что поделилась идеями. Я надеюсь, что языки в .NET не начнут конкурировать друг с другом. Одна из самых привлекательных вещей в .NET - это языки и возможность взаимодействия между ними, но теперь кажется, что этого больше не будет. Сейчас недостаточно выбрать .NET в качестве стека разработки, я думаю, нам нужно будет также быть осторожными с языками, которые мы выбираем. Жалко, это похоже на шаг назад.

Что касается последнего вопроса, я думаю, что razor был написан задолго до ядра .NET, с веб-страницами ASP .NET и веб-матрицей, поэтому я думаю, вы имеете в виду, что движок razor был переписан на ядре .NET, ориентированном на C #. Я прав?

Удачи.

Здравствуйте,
Я нашел это сообщение: Почему не Razor? .
Что вы думаете о том, чтобы полностью отказаться от использования синтаксиса Razor в проектах ASP .NET Core и Blazor в пользу разработки на чистом C # и VB.NET? Уверены ли мы, что нам нужен синтаксис Razor для разработки веб-приложений, которые должны генерировать файлы HTML5 и CSS?

С Уважением,
Филиппо.

@filippobottega

Да ладно, это было до блейзера. Проблема в том, что вам нужен шаблонизатор на клиенте, а в случае с Blazor именно он. В Blazor razor выполняется в браузере, а не на сервере (но при необходимости он может выполняться на сервере). Итак, люди пытаются обмениваться кодом между клиентом и сервером в браузере целую вечность. Совместное использование кода проверки будет простым случаем, но в нашем случае мы делимся метаданными, описывающими модели, чтобы компоненты могли настраивать себя, используя эти метаданные.

Node.JS стал популярным, потому что вы можете совместно использовать код между браузером и сервером. Так почему бы не поделиться кодом .NET между браузером и сервером? Razor компилируется в веб-сборку с вашим общим кодом, и все. Да, вы можете компилировать, запускать и распространять свое приложение, но браузер имеет лучшие кроссплатформенные возможности, и вы будете ориентироваться на большее количество платформ с тем же кодом. Я также видел, как WPF скомпилирован для веб-сборки, если вы хотите пойти по этому пути.

Мы предпочитаем использовать существующие JS-компоненты и смешивать их с нашей базой .NET, но мы предпочитаем .NET и razor в качестве замены другим фреймворкам JS, таким как angular. Это в 10 раз продуктивнее, если вы знаете, что делаете, по крайней мере, для нас.

С уважением.

@mcurros Да, многое было переработано / переписано в ASP.NET Core (посмотрите на модель конвейера в качестве примера), включая Razor.

@mcurros Хорошо, это правда, что нам нужен механизм шаблонов, но проблема в том, что синтаксис Razor не поддерживается надежным дизайнером WYSIWYG.
Например, Blazor использует Bootstrap в качестве библиотеки CSS. Для Boostrap есть интересный конструктор под названием Bootstrap Studio, но он не поддерживает синтаксис Razor.
Для настольных приложений WinForms есть хороший дизайнер WYSIWYG для быстрого проектирования интерфейсов, для XAML то же самое. Есть дизайнер, который мы можем использовать для быстрого создания HTML5-CSS с синтаксическими представлениями Razor (.cshtml / .vbhtml)?

@filippobottega
Поскольку устройства, которые могут запускать браузеры, имеют порядок 10 КБ, я думаю, что создание точного инструмента WYSIWYG, вероятно, не стоит усилий. В наши дни существует тенденция запускать его в браузере и позволять браузеру выполнять рендеринг. В примерах Blazor используется Bootstrap, но razor - это шаблонизатор, вы можете выдавать то, что хотите, и фреймворк CSS / HTML, который вам нравится. Интересными частями являются компиляция в веб-сборку и модифицированная бритва для обеспечения маршрутизации SPA, а также все, что вам нужно для создания клиента SPA. Кроме того, при необходимости вы можете отобразить это на сервере (для общедоступных веб-сайтов и индексации поисковыми системами). Думаю, это круто.

Таким образом, blazor обеспечивает компиляцию веб-сборки в реальном времени и запускается в браузере при нажатии F5. Это быстро, попробуйте.

@mcurros Спасибо за ответ. Я согласен с вами, даже если я думаю, что возможность изменять структуру шаблонов с помощью перетаскивания с помощью предварительного просмотра браузера может быть действительно полезной.
Если подумать о предварительном просмотре для разработчиков, где компоненты имеют возможность перемещать, изменять размер и встраивать в другие компоненты с помощью перетаскивания, наконец, обновляя шаблон CSHTML.
Например, Concrete5 позволяет изменять макет на лету.
Дайте мне знать, если вы думаете, что в будущем возможен «режим дизайна».

С уважением,
Филиппо.

Не думаю, что у VB будет будущее:
Новая стратегия Microsoft по прекращению совместной эволюции C # и Visual Basic сделает его еще менее уважаемым разработчиками.
C # - это будущее разработчиков .Net, поэтому пришло время ограничить использование Visual Basic локальными устаревшими системами.

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 миллионов строк кода, половина из которых все еще используется, теперь необходимо переписать. VB.Net был убит из-за полного незнания программистами последнего поколения самого языка (и всех идиотов, которые продолжали сравнивать его с Visual Basic - яблоки с апельсинами) с абсурдно ложными сравнениями производительности и других векторов. RIP VB.Net и миллионы разработчиков, которые в результате потеряют работу.

Как и @DamianEdwards , я перенес пример «Веб-приложение ASP.Net Core» с C # на VB. Он (успешно) использует файлы Razor .cshtml в проекте VB. Я убедился, что он совместим с ASP.Net Core 2.1. Вы можете найти это здесь:

https://github.com/mevdschee/aspnetcorevb

Пример @marcusoftnet Damian - круто использовать .cshtml для представлений, а остальную часть приложения в VB.NET , но было бы очень здорово использовать .vbhtml для представлений 😃

Я не знаю, что Microsoft имеет в виду, имея в руках язык программирования, такой как VB, и иметь возможность использовать как клиентские, так и серверные области в Интернете.

клиент: vbscript
сервер: vb

Полировка VB - это то, что принесет вам пользу, это понятно, понятно и легко адаптируется, это действительно больно и ностальгия знать, что vb.net нет в сети, но это ваша вина и сосредоточьтесь только на одном

Перевод Bing:
Я не знаю, есть ли у Microsoft в голове, имея в руках язык программирования, такой как VB, который может использовать в Интернете две области - клиентскую и серверную.

Клиент: VBScript
Сервер: VB

Полировка VB - это то, что бенефициар понятно, понятно и адаптируется, действительно причиняет много боли и ностальгии, зная, что vb.net не в сети, но это ваша вина и сосредоточьтесь только на одном

Только что заметил это:
https://blogs.msdn.microsoft.com/vbteam/2018/11/12/visual-basic-in-net-core-3-0/

Это что-нибудь изменит?

Это позволит продолжить поддержку VB.NET для добавления функций, которые уже добавлены в C #, но опять же не vbhtml 😕

@hishamco Нет. Пока я разделяю вашу :( движок Razor поддерживает только C #.

Razor Engine поддерживает только C #

Вот что я имел в виду 😄

Индекс Тибора показывает, что VB.NET растет, в любом случае нам нужна бритва vb

Как и @DamianEdwards , я перенес пример «Веб-приложение ASP.Net Core» с C # на VB. Он (успешно) использует файлы Razor .cshtml в проекте VB. Я убедился, что он совместим с ASP.Net Core 2.1. Вы можете найти это здесь:

https://github.com/mevdschee/aspnetcorevb

@mevdschee Мне любопытно, через какой процесс вы

@Webbarrr Я

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

Я согласен с тем, что vbhtml - безнадежное дело, потому что код VB.NET не подходит для синтаксиса HTML, CSS и JavaScript! Вместо этого я прошу vbxaml!
Я разместил это предложение в репозитории VB.NET несколько месяцев назад:
https://github.com/dotnet/vblang/issues/329
Это цитаты:

Пусть VB.NET оседлает новую волну WebAssembly:
После WebAssembly и Blazor возможность представляет собой: теперь логично писать XAML вместо HTML5 (различия минимальны) и писать VB.NET вместо Java-скрипта (точно так же, как C # заменяет Java теперь в Blazor).
Уже существует проект под названием Ooui, который пытается сделать это на C #.
Я думаю, что VB.NET должен делать то же самое и иметь проект по разработке страниц ASP.NET с кодом XAML и VB.NET, используя работу, проделанную в SilverLight, Blazor и Ooui. Если это начнется сейчас, оно может неуклонно расти, вместо этого ожидая, пока Blazor и Ooui стабилизируются, а затем MS скажет:
К сожалению, догнать VB.NET будет дорого!

VBlazor (.vbxaml) позволит разработчикам настольных компьютеров, имеющим опыт работы с VB.NET и WPF / UWP, плавно перейти на ASP.NET.

ИМХО, использование XAML или языка шаблонов, такого как Fluid, сделает всех счастливыми, потому что Razor написан только для C #

VBLazor будет похож на представление дизайна uwp / wpf, но с двумя файлами кода программной части, один для кодов сервера vb.net, а другой - для кодов клиента (скрипта), с возможностью использования шаблона MVVM для организации больших проектов. XAML будет соответствовать html5, стили Xaml будут скомпилированы в CSS, а коды сценариев VB.NET будут скомпилированы в WebAssembly.

Я закрываю это, потому что, к сожалению, довольно ясно, что нет намерения добавлять шаблоны проектов VB.NET для ASP.NET Core.

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

Наконец: рабочий образец VB.NET ASP.NET MVC Core Razor!
https://github.com/VBAndCs/VB.NET-Razor
Я реализовал простой VBRazorViewEngine в проекте VbRazor.
Чтобы использовать VBRazorViewEngine в проекте, я добавил эти два оператора в метод 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

Свойство Razor использует литералы xml для создания HTML-кода и возвращает его в виде строки. Пример:
`` VB.NET
Импорт VbRazor

Открытый класс IndexView
Реализует 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

Конец класса


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

Это все!! Если вы запустите проект, вы увидите эту веб-страницу:
VBRazor

Это было действительно легко, но требует дополнительной работы, поэтому я надеюсь, что вы начнете вносить свой вклад в этот проект, чтобы сделать его действительно продуктивным инструментом!
Первое, что нужно сделать, это создать шаблон VB.NET для ASP.NET MVC Core. Мне пришлось создать проект C #, а затем преобразовать его в VB!

Второе, что нужно сделать, это добавить поддержку intellisense для атрибутов html в литералы xml в VB!

Механизм просмотра правды должен анализировать своего рода шаблон, подобный тому, что мы видели в Razor или Markdown и т. Д., Но то, что вы сделали, легко, потому что окончательная разметка, созданная из кода, за которым и были созданы классы из Razor.

@hishamco
Я сделал это за пару часов, благодаря литералам XML VB, о которых почти забыли! Возможно, я сам забыл об этом до тех пор, пока через несколько недель я не попытался предложить какой-то новый синтаксис, поэтому я написал, и редактор дополнил
Я желаю вам и другим помочь в этом, чтобы мы могли писать настоящие приложения MVC Cpre с VB.NET.В gitter есть комната для волонтеров VB:https://gitter.im/VB-NET/Volunteer
Благодарю.

Xml literal - очень хорошая функция, которая есть только в VB. Что касается vbhtml, это требует времени и усилий, и я один из заинтересованных парней из прошлого, надеюсь, мы сможем начать это в ближайшее время

Привет всем,
Это функциональная VB Razor (Вазор). Радоваться, веселиться:
https://github.com/VBAndCs/Vazor

Привет всем,
Пожалуйста, поддержите это предложение https://github.com/aspnet/AspNetCore/issues/9270
Это может быть простой альтернативой созданию страниц vbhtml.

@VBAndCs , постарайтесь не публиковать сообщения о старых закрытых проблемах. Мы стараемся сохранить эту систему отслеживания ошибок для ошибок и запросов функций в ASP.NET Core и свести к минимуму другие обсуждения.

@Eilon
Извините, но это запрос функции, который еще не существует. Быть закрытым не должно вас беспокоить, но оно все равно появляется в поиске Google, поэтому важно хранить всю связанную информацию по этой теме вместе.
Во всяком случае, это мой последний ответ в этой теме.
благодаря

@VBAndCs , пожалуйста, не расстраивайтесь из-за властного тона

@mevdschee
Спасибо за поддержку :). Я могу представить себе огромное давление, которое испытывает @Eilon из-за сотен уведомлений в день, ошибок, которые нужно исправить, обсуждения, вопросов, на которые нужно ответить, и предложений, которые следует отклонить: dancing_men:
Итак, я буду ссылаться на эту тему в своих предложениях (которые, я надеюсь, будут поступать, пока VB.NET не восстановит свое достойное место :)).
Я надеюсь, что Эйлон обсудит важные предложения или, по крайней мере, даст им возможность открыться на некоторое время, чтобы сообщество могло их обсудить, вместо того, чтобы сразу переходить к кнопке закрытия.
Еще раз спасибо @Eilon :)

Я слежу за этой веткой в ​​течение долгого времени, поскольку, на мой взгляд, правильное полное решение должно было быть на дорожной карте без необходимости принуждения. Я был немного разочарован, увидев после тяжелой работы, проделанной @VBAndCs, что @Eilon попытается остановить кого-либо еще, пытающегося помочь решить проблему для стольких людей! Я понимаю, что на меня оказывается большое давление, но тот факт, что люди все еще следят за этим, показывает, что это важно для многих! Продолжайте хорошую работу :)

Всем привет,

Мы настоятельно поощряем активность сообщества и функции, но мы не можем принимать определенные запросы функций или исправления ошибок, потому что они не имеют для нас достаточно высокого приоритета. Это даже относится к случаю, когда есть запрос на перенос, который включает тесты и документацию. Любое изменение любого размера требует затрат, в том числе долгосрочных, и мы должны уравновесить это со всей другой потенциальной работой, которую мы рассматриваем. Когда дело доходит до механизмов просмотра, мы на 100% привержены механизму просмотра Razor с поддержкой C # и отличным опытом редактора в Visual Studio, Visual Studio для Mac и Visual Studio Code.

Мы считаем, что у таких людей, как @VBAndCs , есть прекрасная возможность создать дополнительные проекты, которые работают с ASP.NET Core и интегрируются различными способами. Мы рады связать эти проекты, попросив людей присылать PR к файлам readme, таким как readme MVC .

Благодаря,
Эйлон

@ Simonmilne80 , @mevdschee и всем, кому интересно:
Я добавил в репозиторий рабочий пример zml-страниц, поэтому давайте обсудим эту тему: https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
и подарите @Eilon минуты покоя :)

Кстати, мы хотим добавить упоминание Vazor в предстоящую встречу сообщества ASP.NET . У вас есть запись в блоге, на которую мы можем ссылаться в дополнение к репозиторию GitHub?

@Eilon
Извините за задержку с ответом. Сначала мне нужно было завершить работу и написать файл readme, содержащий основную информацию о тегах ZML.
ZML 1.0 теперь имеет собственное репо и NuGet .
Я бы одобрил, если вы упомянули ZML, потому что он не зависит от языка (репо содержит образец проекта с двумя версиями C # и VB, и оба они используют одни и те же файлы .zml.
Благодарю.

Это уже произошло! https://github.com/VBAndCs/Vazor/issues/1

Изучение возможности преобразования моего приложения VB.NET WebForms в .NET Core Razor Pages. Если это правда, что VB не будет поддерживаться, то на какой современный путь ASP.NET мне следует перейти? Переписать приложение на C # - не вариант.

@Gruski, если есть много кода VB.NET, который является «библиотечным» кодом, то есть даже не специфичным для WebForms, тогда все это отлично работает в мире .NET Core / Razor Pages / Blazor. Это часть WebForms vs. Razor (и Blazor), которая требует гораздо больше работы.

Мы только что выпустили предварительную версию электронной книги, чтобы помочь разработчикам перейти с WebForms на Blazor:

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

Таким образом, можно было бы сохранить часть вашего приложения в VB, и тогда только пользовательский интерфейс должен был бы быть C #.

Таким образом, можно было бы сохранить часть вашего приложения в VB, и тогда только пользовательский интерфейс должен был бы быть C #.

Вы также можете использовать проект VB.NEt для пользовательского интерфейса. Только файлы cshtml будут содержать фрагменты C #. Если вы хотите избежать кода C #, вы можете использовать xml-литералы в VB.NEt для разработки пользовательского интерфейса, как я это сделал в моем проекте Vazor:
https://github.com/VBAndCs/Vazor-DotNetCore2
Энтони Грин поднял это на другой уровень, как вы можете видеть в его последних темах в его блоге:
https://anthonydgreen.net/
Или здесь:
https://github.com/dotnet/vblang/issues/483
Я также предложил использовать команды тегов XML, чтобы избежать использования C # и VB и иметь чистый XML Razor (я назвал ZML):
https://github.com/VBAndCs/ZML

Хотя наш проект является проектом WebForms, мы больше не используем его, как предполагалось изначально. Это было старое, но крупное корпоративное приложение, которое с годами было преобразовано для использования исключительно клиентской инфраструктуры Vue.js, вызывающей WebMethods, находящуюся в каждой из страниц .aspx-кода. Таким образом, нет ни серверных компонентов (ни runat = "server" ничего), ни состояния просмотра, ни сообщений на всю страницу (нет элемента "form"). Помимо метода Load, который динамически инициализирует некоторые компоненты на стороне клиента Vue, код позади содержит только WebMethods.

С учетом этого и необходимости перехода на ядро ​​.NET, на какую новую технологию ASP.NET мне следует перенести проект, если я хочу уйти от WebForms? MVC для меня не имеет смысла, так как Vue.js уже имеет шаблон MVC на стороне клиента, что, на мой взгляд, более элегантно, так зачем мне это на сервере? Blazor также не имеет смысла, потому что это повлечет за собой повторное переписывание всего пользовательского интерфейса.

@Gruski Я бы порекомендовал Razor Pages. Начать работу очень просто: просто создайте папку Pages в своем приложении ASP.NET Core и начните добавлять в нее файлы .cshtml. Каждая страница по сути является URL-адресом, и вы можете поместить в нее произвольный HTML-код, а затем добавить любой C # для логики сервера.

Попробуйте это руководство, чтобы начать работу: https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-3.0&tabs=visual-studio

@Eilon Есть ли в Razor Pages код для размещения WebMethods? Иначе где бы размещались WebMethods? Глядя на это, похоже, что он по-прежнему использует упрощенную версию шаблона MVC на стороне сервера за кулисами, что является избыточным при использовании Vue. Также нет поддержки VB в Razor Pages.

Razor Pages не поддерживают WebMethods. Я бы рекомендовал использовать MVC для этих методов. Вы можете смешивать Razor Pages и MVC в одном приложении.

@Gruski Я путешествовал и просто догонял.

Если у вас есть пользовательский интерфейс в Vuew.js, можете ли вы просто использовать ASP.NET Core MVC / WebAPI? Это прекрасно работает. Хотя эта статья немного включает Angular, она показывает общую технику: https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern- веб-приложения /

Есть две области проблем с поддержкой:

  • Razor не поддерживается для Visual Basic, хотя, как указывалось, @VBAndCs и @AnthonyDGreen разработали потенциально лучшее решение для Visual Basic.
  • Нет шаблонов для ASP.NET WebAPI.
Была ли эта страница полезной?
0 / 5 - 0 рейтинги