Aspnetcore: ASP.NETCoreでのVisualBasic .NET(VB.NET)のサポート

作成日 2018年01月03日  ·  91コメント  ·  ソース: dotnet/aspnetcore

過去数年間、ASP.NETCoreでのVB.NETサポートについて多くの質問がありました。 それらに従うと、それらはすべて行き止まりになります-実際の応答なしで閉じられるか、ASP.NET Coreとは関係のない他のリポジトリ( dotnet組織のどこかにあるなど)に移動されます。

その間、VBをサポートするという話がありました。 ASP.NETCoreが最初からVBをサポートしていなかったことは完全に理解できます。 プロジェクトは急速に変化していたため、最初はC#に焦点を合わせ、後で他の言語のサポートを追加することは理にかなっています。 しかし、VBをサポートするという考えは途中で失われたように見えました。

簡単なタイムラインは次のとおりです。

2014年12月16日:

VB、F#などの他の言語をサポートパッケージなどの形式で追加できるように、拡張ポイントを用意する予定です。
https://github.com/aspnet/Home/issues/236#issuecomment -67046039

2015年4月25日:

みなさん、こんにちは! ASP.NET 5 / DNXでVBをサポートする計画を発表しました!
https://github.com/aspnet/Home/issues/236#issuecomment -96003847

本日、ASP.NET5がVisualBasicで完全にサポートされることを発表しました(ツールとランタイムの両方–クロスプラットフォームランタイムサポートを含む)。
https://blogs.msdn.microsoft.com/webdev/2015/04/24/making-it-better-asp-net-with-visual-basic-14/

2016年11月19日:
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

2017年12月12日:

ASP.NETCore用のVBテンプレートを追加する予定はありません
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

VBサポートは

「まだ機能していませんが、VBを許可する予定です」

「VBが完全にサポートされます!」

「VBはサポートされていませんが、シーッ、誰にも言わないでください」。

だから私の最初の質問は:

何が起こったのですか、そしてなぜこれについてコミュニティとの発表や議論がなかったのですか?

公式ブログ投稿でASP.NETCoreでのVB.NETのサポートを発表することから、フィードバックなしでまったくサポートしないことへと移行するのは奇妙に思えます。 これについて何か発表はありましたか? あったとしても、それは確かに広く公表されていませんでした。

私の次の、そして_もっと重要な_質問は:

VB.NETのサポートをASP.NETCoreに追加するために、VBコミュニティは何ができますか?

作成できるプロジェクトテンプレートはありますか?
実装できるコードジェネレーターはありますか?
ASP.NET CoreをVB開発者にとってもC#開発者にとっても素晴らしいものにするにはどうすればよいでしょうか。


.NET Coreコンソールアプリケーションを作成し、プロジェクトファイルを編集し、ASP.NET Core C#から生成されたクラスをコピーすることにより、VBで単純なASP.NET Coreアプリ(リポジトリが古くなっているためリンクが削除されました)をまとめました。テンプレート。 それは正常に動作し、非常に基本的なものですが、VB.NETがサポートされない理由はわかりません。

最も参考になるコメント

+1
Visual Basicは、常に.NETの世界で最も重要な言語です。 VBはまだ多くのファンであり、今日使用しています! 多くの人が職場でC#プロジェクトで働いていますが、私のような多くの人は自分のプロジェクトでVBを使用するのが大好きだと思います。

全てのコメント91件

cc @DamianEdwards

Razorリポジトリ.cshtmlと一緒にVBを使用するために長い間問題を記録しましたが、それ以降、アクションは表示されませんでした😟。
私はhyprid VB ASP.NET Coreアプリケーションを実証し@DamianEdwardsからの偉大な例を見て数週間前にここに

@reducktedの優れた要約に加えて、ASP.NET CoreのRazor構文に関するMicrosoftのドキュメント(2017-10-18現在)には、VisualBasicおよび.vbhtmlファイルの使用に関する多数の参照がまだあります。

Visual Basic構文では、角かっこではなくジェネリック型パラメーターを括弧で囲むため、この制限は.vbhtmlRazorファイルには適用されません。

ただし、 ScottAddie @MSFTは2017-07-21にコメントを投稿しました。

ASP.NETCoreはまだVB.NETをサポートしていません。 今のところ、ASP.NETを適切に使用する必要があります。

では、Visual Basic / vb.net /.vbhtmlファイルは.NetCoreに含まれるのでしょうか。 もしそうならいつ??

このサポートを実現するにはどうすればよいでしょうか。 VB.NetとF#のサポートが欲しいです!

ASP.NET CoreドキュメントからVBHTML参照を削除するためのPRを送信しました: https

現在、ASP.NETCoreにVBHTMLサポートを導入する予定はありません。

.NET Core SDKの一部としてインストールされるASP.NET Core用のF#テンプレートがあります。

@Eilon現在、ASP.NETCoreにVBHTMLサポートを導入する予定はありません。

個人的には、Razorページを使用しておらず、使用するつもりもないため、VBHTMLのサポートについては心配していません。 @AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626)で言及されているように、MVC 5ではほとんど使用されなかったため、VBサポートを追加しても意味がありません。私は、多くの利益を得るために非常に多くの作業を必要とするだろうと想像しています。

@Eilon .NET Core SDKの一部としてインストールされるASP.NET Core用のF#テンプレートがあります。

OK、でもあなたの主張がここにあるのかよくわかりません。 どちらかといえば、これはVBテンプレートも存在する必要があるという事実を補強するだけではありませんか?

F#テンプレートはF#コミュニティによって作成されたものではありませんか? MicrosoftのチームがVBテンプレートを作成しない場合、VBコミュニティがVBテンプレートを作成できないのはなぜですか?

@reducktedの質問は、それに対する需要とそのコスト、つまり初期コストと継続的なコストの両方に

また、F#テンプレートの制限の1つは、API側に重点を置いていることです。 つまり、RazorやCSHTMLはありません(FSHTMLがないため)。 VBユーザーの場合、VBを使用するほとんどのユーザーは、MVCのVBHTMLエクスペリエンスを期待していると思います。また、それを作成するためのコストは莫大で、数か月から数か月の作業が必要です。 したがって、限定されたVBテンプレートを追加することが特に価値があるかどうかは私にはわかりません。

@Eilon VBユーザーの場合、VBを使用しているほとんどのユーザーは、MVCのVBHTMLエクスペリエンスを期待していると思います...

@AnthonyDGreenと話すことをお勧めします。これは、私が以前にリンクしたコメント(https://github.com/dotnet/vblang/issues/238#issuecomment-354927626)で彼が言ったことの正反対です。 今回はそれを引用します(強調は私のものです):

MVC 5の.vbhtmlレイザーエンジンは、主にすべてのVB Webプロジェクトの1%未満が5つのバージョンの後に

@ reduckted-興味深い、それは私にとってのニュースです。 当初はVB開発者(特にVB6)に馴染みのある概念で設計されたWebフォームの時代を振り返ります。Webフォームは非常にHTML中心(ソート)であったため、VBHTMLはその人々のグループにとって最も興味深いものです。 繰り返しになりますが、それは約15年前のanec-dataです😄

ところで、明確にするために、私たちは決してそれをするつもりはないと言っていません-ただそれが現在どの計画にも含まれていないというだけです。

私はVBファンです😄これは.vbhtmlがすぐに使えることを期待しています。前に述べたハイブリッドアプローチは、すべてのVBの人に​​とって十分ではありませんが、場合によっては問題ありません。 私の質問は、C#の代わりにVBを発行するためにRazorを再実装することです。それは機能するのでしょうか、それともMVCがcshtml C#で緊密に結合されているのでしょうか。

@hishamco残念ながら、Razorは、VBとC#が別々のパスになるように実装されました。 関係者の何人かと話をしましたが、それはかなり大きなプロジェクトです。

@ KathleenDollard.pugおよび.mdファイルタイプのカスタムViewEngineをサポートする他の.NETCoreプロジェクトがあります。

確かに、 <Project Sdk="Microsoft.NET.Sdk.Web"> .vbprojを使用して、.vbhtmlrazorpagesファイルで機能させることができます。

@ tb-mtgそれを探索して、それらのプロジェクトが何をしたかを確認したい場合は、すべてオープンソースです。 それを書いた人々はそれが大きな努力だったと私に言いました。 労力の大きさと、MVCの以前のバージョンでのvbhtmlの採用が非常に少ないため、売り込みが困難です。

@KathleenDollardもう一度質問を繰り返します

@rynowakのために良い質問だろう@hishamco。 ライアン?

MVCのランタイムコンパイルエンジンは、C#のコンパイルにRoslynインフラストラクチャを使用し、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

MVC 5の.vbhtmlレイザーエンジンはコアに移植されませんでした。これは主に、すべてのVB Webプロジェクトの1%未満が5つのバージョンの後でそれを使用したためです。

それでは、他の99%は何を使用していますか?

Angular、または他の同様のフロントエンドライブラリだと思います。 それが私が使っているものです。

実際、これは私がASP.Net MVC RazorからAngularに移行する新しいWebプロジェクトで行う予定のことでもあります。今年は4つの新しいWebプロジェクトを実行する必要があるため、誰かが数え続けると.. LOL

VBは長年人気のある言語です! 会社として、C#で書き直したくないコードスニペットがたくさんあることは確かです。特に新しいEU規則が施行されると、書き直される予定の古い学校のWebフォームアプリがたくさんあると思います。これは、VBが非常に必要とされることを意味します! マイクロソフトがVBで1分間非常に熱く、冷たく、パーで開発され、次に貧しい親戚に打撃を与えるのは驚くべきことです。 はい、新しい言語とフレームワークが出てきていますが、人気のある古いものを捨てないでください!

ここで追跡されていることをうれしく思います。うまくいけば、何らかのアクションが見られるかもしれません。

MSからのすべての兆候(イタチの言葉)は、VB.NETをダムダウンすることを計画していること、および/または何もせずに他の人が不足しているビットを書き込むのを待つことです。 私は彼らのイタチの言葉を超えています、私は今VB.NET開発を終了しています。

MicrosoftがGitHubを買収したとき、VB.Netが行ったのと同じ扱いを受けないことを願っています(完全なサポートの空の約束で死んだままにされています)。

@NatShaw私は

VB.NETをダムダウンする計画についてあなたが何を意味するのかわかりませんが、それを行う計画はありません。 VisualBasicの言語戦略は変更されていません。

VB用のかみそりには問題があります。 主な開発ワークフローの場合、 WebAPIは、ここに示すようにVBの優れたワークフローです。 (テンプレートは別として)

@ tb-mtgVB.Netは死んだままではありません。 絶え間ない改善があります-言語の小さな改善とIOperationのように機能して、RoslynアナライザーでのVisual Basicのサポートを、エコシステム全体でVBをサポートしやすくします。 確かに、VBは、すべての新しいシナリオではなく、すでに良好なシナリオと適切な新しいシナリオに焦点を合わせています。 たとえば、Scott Hunterは、VB.Netが.NET Core3で動作することをすでに発表しています。

@KathleenDollardのピースはすでに欠落しています

これは、マイクロソフトが優れたテクノロジーを作成し、それを放棄するためのテーマです。 彼らは会社を設立した言語であるVBを放棄し、C#のみのショップになりました。 新しいテクノロジーが導入されると、すべての言語がサポートされることを期待しています。 悲しいことに、この新しいMicrosoftは、すべての言語を同等のパートナーに保つという点で15年前ほどうまく機能していません。 残念ながら、私は数万行のVBを持っており、asp.netコアを使用してクロスプラットフォームに移行することを望んでいました。 現在、asp.netコアに放棄されたWebフォームがあり、VBがないために行き詰まっています。 言語や??を変更できます。 言語を変える努力をするなら、それはマイクロソフト以外のものになり、すべてのプラットフォームをサポートするために構築された言語になります。 私は非常に優れたVB開発者であるために割引されて退院することにうんざりしています。 マイクロソフトのプラットフォームと言語を30年間使用および販売した後、私の会社とコードを取得してマイクロソフトを離れる時期かもしれません。 .net管理からVBへの見下すような態度はあまりにも多くなりすぎています。 最近のマイクロソフトに非常に失望している私たちVBerはまだたくさんいます。 コミュニティがすべてのプラットフォームでVBを進歩させることができるように、VBをオープンソースにしたほうがよいでしょう。

@SrqComputerguy彼らはVBを放棄しています

違う。 @KathleenDollardは、文字通り_ 1日前__このスレッド_で、「VisualBasicの言語戦略は変更されていません」と述べています。 (コメント)

@SrqComputerguy残念ながら、私は数万行のVBを持っており、asp.netコアを使用してクロスプラットフォームに移行することを望んでいました。 現在、asp.netコアに放棄されたWebフォームがあり、VBがないために行き詰まっています。

Webフォームは古いテクノロジ(ソフトウェア標準では事実上古い)であるため、.NET Core(VB.NETまたはC#のいずれか)でサポートされていないのは当然のことです。 ASP.NET CoreでのVB.NETの使用については、今週初めのこのブログ投稿を参照してください。

@SrqComputerguy努力変更言語を入れると、Microsoft以外のものになり、すべてのプラットフォームをサポートするように構築された言語になります

VB.NETはクロスプラットフォームであり、Webフォームではありません。

@SrqComputerguyコミュニティがすべてのプラットフォームでそれを進めることができるように、VBをオープンソースにしたほうがよいでしょう。

😕そうです。 https://github.com/dotnet/vblang

@reduckted C#には「ASP.NETコアWebアプリケーション」テンプレートがあります

すでに戦略は、VBがもはや一級市民ではないということです-変化はありません! @KathleenDollardのリンクの記事はかなり侮辱的であり、これらの光沢のある新機能はVBコードを乱雑にしすぎるため、私たちには良くないことを示しています。 イタチの言葉のナンセンスの負荷。 例:

  • VB 15には、C#7.0の新機能のサブセットが付属しています
  • VBが普及しているコアシナリオとドメインにイノベーションを集中させます。
  • ただし、VB 15は、is-expressions、out-variables、local関数などの機能を備えていません。これらの機能は、VBの可読性に悪影響を及ぼし、概念数を大幅に増やします。

終わりました。 彼らはそれを唖然としています。

古い技術はそれが役に立たないという意味ではありません。 WebFromsは、SEOは必要ありませんが、クロスプラットフォームが必要な基幹業務アプリケーションに最適です。 WebFormは、winformバージョンのルックアンドフィールを同じように見せ、動作させます。 それはまたそれがうまくいく多くのビジネスシナリオを持っています。 すべてがC#MVCangular.jsアプリケーションである必要はありません。 それでも、MSが現在改善しているツールはそれだけです。

かみそりのページ(.netの更新されたaspページ)がVBではなくコアでC#の愛を得るのはなぜですか?

MSはMonoプロジェクトも購入したので、C#を最初にサポートし、問題がなければVBはそこで愛されます。

MSはPythonにVBよりも多くの愛を与えています。 Pythonは、C#やVBよりもクロスプラットフォーム言語であり、このVBerはおそらく将来的に使用される予定です。

悲しいことに、MSは、;なしで行の終わりを伝える方法をまだ知らない言語に依存しています。

MSにはもうVBチームがありますか? 彼らはウェブプレゼンスを持っていません。 進歩のために、私たちは他の場所を探す必要があります。

それが続く間、それは良かった。 VBRIP。

こんにちは、

Microsoftの誰かがvbをレイザービュー(.netコア)でコンパイルする努力を再考できますか? プロジェクトブレイザーは、vb内の多くの既存のコードを共有して新しいWebアプリケーションを作成する新しい方法を可能にすると思います。

VB .NETは、C#で実行できるのと同じことができるため、もう一度人気がありました。 vbを置き忘れれば、その人気を効果的に終わらせることができると思います。

非常に大きなVBWinformsアプリをWebアプリに移植しています。 JSでフレームワークを書き直す方法は50%ですが、Blazorを使用すると、より高速でクリーンになり、多くの既存のコードを共有できます。 C#の代わりにVBを使用してビューをコーディングすることもできれば素晴らしいと思います。 すべてがMVCとかみそりであるわけではありません。

だから、おそらくブレイザーに焦点を当てると、努力が少なくなるでしょうか?

数年前から最新およびレガシーのVBコードを使用しなければならなかった後、冗長性がなくなるのを待ちきれません。 マイクロソフトが1つのスタイルの言語(C)に焦点を合わせるのは賢明だと思います。

@mcurros

Razorのサポートが検討され、再検討されました。

非常にエキサイティングですが、現在、Blazorは実験的な取り組みであり、製品計画はありません。 Blazorが製品になれば、VBの話を再考する価値があることに同意し、それが起こることを期待しています。 それがVBサポートに関する戦略の変更につながるかどうかはわかりません。

あなたへの3つの質問:

  • WinFormsが.NETCore 3に移行することについての発表により、WinFormsコードを移植するという決定を再考することになりますか?

  • あなたはウェブのために書き直しています。 次のようなVBWebAPIバックエンドを使用していますか: Angular、Visual Basic、および.NET Coreを組み合わせて最新のWebアプリを開発していますか?

  • JSを使用しています。つまり、チームの一部が中括弧言語を効果的に使用しています。 C#に変換しない理由は何ですか?

VBでは実行できないC#でのみ実行されていることはありません。 MSはILコンバーターを製造しています。 それは意志の問題です。

ここにあなたへの質問があります。 デスクトップバージョンのように見えて動作するWebバージョン.net4.5.2を持つ基幹業務アプリが多数ある場合、MSはどのようにクロスプラットフォームに移行することを提案しますか。

それで、MSがAsp.net Core WaveにVB開発者を含めるという考えを馬鹿にしていて、それにリソースを費やすことに興味がないことは公式ですか?

@ sreenathGanga1988 VisualBasic.NETの.NETCoreでRazorをサポートする現在の計画はないことを発表しました。 MVCの一部としてASP.NETCoreにあるWebAPIがサポートされています。 サポートされていないのはRazorだけです。 Razorエンジンは複雑で、単一言語用に作成されました。

@KathleenDollard VBHTML.Contribを作成して、VBファンが現在のRazorEngineを使用してVBをサポートするかみそりエンジンの構築に貢献できるようにすることができます

新しいバージョンのRazorを作成した人々は、Visual Basicを含めるのは非常に複雑であると考えています。これは、複数の言語用に設計されていないためです。 私はコードを見ていませんが、それらの人々の意見を信頼します。 それに基づいて、フォークを作成するつもりはありません。

ただし、ASP.NETは理由からオープンソースです。 VB開発者のグループがどこかにフォークを作成し、それらが間違っていることを証明した場合、それはかなりクールです。 このレポのこの問題または別の問題がプロジェクトを指し示していることを嬉しく思います。ツイートする場合は、必要に応じてその存在と進捗状況をお知らせします。

VisualBasicコミュニティのプロジェクトの所有権やそのような管理機能を管理する方法があるように、VisualBasicスペースの.NETFoundation(おそらく貢献、おそらく何か他のもの)の基礎を築きました。 しかし、彼らは人々が望むものを提供するレポを持つコミュニティがあるという証拠を必要としています(財団は死んだプロジェクトを避けるために働いています)。 Entity Frameworkテンプレートがその種になることを望んでいましたが、うまくいきませんでした。 我々は新しいものに取り組む一方、VB EFは、@bricelam@natemcmasterのグローバルツール・カタログをテンプレート、およびコマンドラインパーサー@natemcmasterのフォーク版:これはVBに特異的ではなく、あなたが個人的なリポジトリに物事を見る理由です。

したがって、プロジェクトとプロトタイプはFoundationの関心を引くのに十分ではありませんが、成功したプロジェクトが出現した場合は、.NETFoundationに移動できます。

ご説明いただきありがとうございますが、Roslynが両方をサポートできるのにRazorがC#をターゲットにするように構築された理由はまだわかりません!!

Razorコードを調べて、構文ツリーを直接構築するかどうかを確認していませんが、構築すると仮定します...

Roslynは、C#とVBで異なる特定の明示的な生の構文木を処理します。 たとえば、sei-colonと中括弧はVBではなくC#に存在します。 End SubとHandlesはVBに存在し、C#構文ツリーには存在しません。

@KathleenDollard

はい、プロジェクトブレイザーは実験的なものですが、Webアセンブリにコンパイルされ、クロスプラットフォームアプリを実行するためのより簡単な方法です(サーバーとクライアントで既存のコードを共有します。たまたまWindowsサーバーとASP .NETが好きなので、サーバーを実行することを好みますこれは、既存のコードベースを再利用するための完全な.NETフレームワークをサポートします)。

あなたの質問に関して:

  1. .NET Core 3は、WinFormsアプリをクロスプラットフォームにしないため、追加しすぎません。

  2. アプリがクロスプラットフォームになるため、ウェブ用に書き直しています。 ASP .NETコントローラーを使用して既存のコードを共有しているため、サーバー上では問題はありません。 私が言ったように、私たちはJSで同じ機能を提供し始めている独自のフレームワークを使用していますが、クライアントコードを書き直してテストする必要があり、UIはまだ開発の少なくとも80%を占めています時間。

  3. プロジェクトブレイザーの前に、フレームワークをJSに移植し始めました。 C#で書き直しても、クライアントアプリはクロスプラットフォームにはなりません。いずれにせよ、ブラウザーをターゲットにするか、Xamarinなどに変換する必要があるため、作業は同じです。

私はC、C ++、C#、VB、JSでプログラミングし、いくつかのスタックの使用方法を知っていますが、チームには別の言語への変換に苦労するメンバーが何人かいます。 とにかく、重要なのは、テストしたコードベースを再利用することであり、書き直すことではありません。 blazorがビューでVBをコンパイルできれば、多くの時間を節約できます。それだけです。

また、完全なフレームワークを備えたVB .NETで以前にかみそりのビューをコンパイルできることをユーザーが理解するのは、奇妙なことです。 VBを置き去りにしたようです。 そして、すべてが.NET Coreから始まりましたが、最初は実験的なプロジェクトではありませんでしたか?

もう少しコンテキストを追加するために、さまざまな事業分野向けに3つのミッションクリティカルなERPを移植しています。

よろしく。

@mcurros

あなたのシナリオについてもっと共有してくれてありがとう。

RazorエンジンはASP.NETCore用に書き直されたため、複数の言語での作業は行われませんでした。 RazorエンジンのVBバージョンの使用率が低いことが推進要因の1つでした。 そして、はい、Blazorの存在はその決定を非常に苦痛にします。

@KathleenDollard

洞察を共有してくれたキャスリーンに感謝します。 .NETの言語が互いに競合し始めないことを願っています。.NETの最も魅力的な点の1つは、言語とそれらの間の相互運用性でしたが、今ではそうではないようです。 現在、開発スタックとして.NETを選択するだけでは不十分です。選択する言語にも注意する必要があると思います。 残念ながら、それは一歩後退したように感じます。

ただし、最後の質問では、かみそりは.NETコアよりかなり前にASP .NET WebページとWebマトリックスで作成されたと思います。したがって、かみそりエンジンはC#を対象とした.NETコアで書き直されたと思います。 私は正しいですか?

幸運を祈ります。

こんにちは、
私はこの投稿を見つけました:なぜかみそりではないのですか?
純粋なC#およびVB.NET開発を優先して、ASP .NET CoreおよびBlazorプロジェクトでRazor構文の使用を完全に回避することについてどう思いますか? HTML5およびCSSファイルを発行する必要のあるWebアプリケーションを開発するためにRazor構文が必要であると確信していますか?

よろしく、
フィリッポ。

@filippobottega

まあ、それはBlazorの前でした。 問題は、クライアントにテンプレートエンジンが必要なことです。Blazorの場合はそれだけです。 blazorでは、かみそりはサーバーではなくブラウザで実行されます(ただし、必要に応じてサーバーで実行できます)。 そのため、人々は何年もの間、ブラウザのクライアントとサーバー間でコードを共有しようとしています。 検証コードの共有は単純なケースですが、この場合、モデルを説明するメタデータを共有して、コンポーネントがそのメタデータを使用して自身を構成できるようにします。

Node.JSは、ブラウザーとサーバー間でコードを共有できるため、人気が高まっています。 では、ブラウザとサーバー間で.NETコードを共有してみませんか? Razorは、共有コードを使用してWebAssemblyにコンパイルされます。これで完了です。 はい、アプリをコンパイル、実行、配布することはできますが、ブラウザーのクロスプラットフォーム機能は優れており、同じコードでより多くのプラットフォームをターゲットにすることができます。 そのようにしたい場合は、WPFがWebAssemblyにコンパイルされていることも確認しました。

既存のJSコンポーネントを利用して、それらを.NETベースと混合することを好みますが、Angularなどの他のJSフレームワークの代わりに.NETとかみそりを使用することを好みます。 少なくとも私たちにとっては、自分が何をしているのかを知っていれば、生産性は10倍になります。

よろしく。

@mcurrosはい、Razorを含め、ASP.NET Core(パイプラインモデルを例として見てください)で大幅に書き直されました。

@mcurrosわかりました。テンプレートエンジンが必要なのは事実ですが、問題は、Razor構文が堅実なWYSIWYGデザイナーによってサポートされていないことです。
たとえば、BlazorはCSSライブラリとしてBootstrapを使用します。 Bootstrap Studioという名前のBoostrapの興味深いデザイナーがいますが、Razor構文をサポートしていません。
WinFormsデスクトップアプリケーションの場合、XAMLの場合も同様に、インターフェイスをすばやく設計できる優れたWYSIWYG設計者がいます。 Razor構文ビュー(.cshtml / .vbhtml)を使用してHTML5-CSSをすばやく作成するために使用できるデザイナーがありますか?

@filippobottega
ブラウザを実行できるデバイスは10Kオーダーであるため、正確なWYSIWYGツールを作成することはおそらく努力する価値がないと思います。 最近の傾向は、ブラウザで実行し、ブラウザにレンダリングを行わせることです。 BlazorサンプルはBootstrapを使用しますが、razorはテンプレートエンジンであるため、必要なものと必要なCSS / HTMLフレームワークを出力できます。 興味深い部分は、WebAssemblyへのコンパイル、SPAルーティングを提供するための変更されたかみそり、およびSPAクライアントを構築するために必要なすべてのものです。 さらに、必要に応じて、サーバーでレンダリングできます(公開Webサイトおよび検索エンジンのインデックス作成用)。 かなりかっこいいと思います。

そのため、blazorはリアルタイムのWebAssemblyコンパイルを提供し、F5を押すブラウザーで実行します。 速いです、試してみてください。

@mcurrosご回答ありがとうございます。 ブラウザのプレビューを使用してドラッグアンドドロップでテンプレート構造を変更する可能性が本当に役立つと思う場合でも、私はあなたに同意します。
コンポーネントを移動、サイズ変更、ドラッグエンドドロップで他のコンポーネントに埋め込むことができる開発者プレビューについて考えてみると、最終的にCSHTMLテンプレートが更新されます。
たとえば、 Concrete5ではレイアウトをその場で変更できます。
将来的に「デザインモード」が実現可能だと思われる場合はお知らせください。

宜しくお願いします、
フィリッポ。

私はVBの未来になるとは思わない:
C#とVisual Basicの共進化を終わらせるためのマイクロソフトの新しい戦略は、開発者からの尊敬をさらに低下させるでしょう。
C#は.Net開発者にとって未来なので、VisualBasicの使用をオンプレミスのレガシーシステムに限定する時が来ました。

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/

2億5000万行のコード(その半分はまだ使用中です)は、今、書き直す必要があります。 VB.Netは、最新世代のプログラマーが言語自体(およびそれをVisual Basicと比較し続けたすべての馬鹿-Apples to Oranges)を完全に知らず、パフォーマンスやその他のベクトルの比較がばかげているために殺されました。 RIPVB.Netとその結果として職を失う何百万もの開発者。

@DamianEdwardsのように、「ASP.Net Core

https://github.com/mevdschee/aspnetcorevb

@marcusoftnet Damianの例は、ビューに.cshtmlを使用し、アプリの残りの部分をVB.NETで使用するのはクールですが、ビューに.vbhtmlを使用するのは非常にクールです😃

VBのようなプログラミング言語を手に入れ、Web上のクライアント側とサーバー側の両方の領域を適切に使用できるというMicrosoftの考えがわかりません。

クライアント:vbscript
サーバー:vb

VBを磨くことはあなたに利益をもたらすものです、それは理解可能で、理解可能で適応性があります、vb.netがウェブ上にないことを知ることは本当に痛くて懐かしいです、しかしそれはあなたのせいであり、1つだけに集中します

Bingの翻訳:
クライアント側とサーバー側の2つの領域のWebで適切に使用できる、VBのようなプログラミング言語を手にしたMicrosoftが頭の中にあることはわかりません。

クライアント:VBScript
サーバー:VB

VBを磨くことは、受益者が理解でき、理解でき、順応性があり、vb.netがWeb上にないことを知るために本当に多くの苦痛と懐かしさを与えるものですが、それはあなたのせいであり、1つだけに集中します

ちょうどこれに気づいた:
https://blogs.msdn.microsoft.com/vbteam/2018/11/12/visual-basic-in-net-core-3-0/

これは何かを変えるでしょうか?

これにより、VB.NETは引き続きサポートされ、C#ですでに追加されている機能を追加できますが、 vbhtmlサポートされません😕

@hishamcoいいえ。私があなたを共有している間:(RazorエンジンはC#のみをサポートします。

RazorエンジンはC#のみをサポートします

それが私が意味したことです😄

Tibor Indexは、VB.NETが成長していることを示していますが、とにかくvbかみそりが必要です

@DamianEdwardsのように、「ASP.Net Core

https://github.com/mevdschee/aspnetcorevb

@mevdscheeプロジェクトテンプレートがVisualStudioから利用できない/ VSCodeでサポートされていないため、VB.NETに移植するために実行したプロセスに興味があります。 どうやってこれをやったのですか?

@Webbarrr C#コードを手動でVBに変換し、Visual Studio C#テンプレートを使用して開始しました。

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

VB.NETコードはHTML、CSS、JavaScript構文にうまく適合しないため、vbhtmlが失われた原因であることに同意します。 代わりに、vbxamlをお願いします!
私はこの提案を数ヶ月前にVB.NETリポジトリに投稿しました:
https://github.com/dotnet/vblang/issues/329
これらは引用です:

VB.NETに新しいWebAssemblyウェーブを乗せましょう:
WebAssemblyとBlazorの後、チャンスはそれ自体を表しています。HTML5の代わりにXAMLを記述し(違いは最小限)、Javaスクリプトの代わりにVB.NETを記述するのが論理的です(C#がBlazorでJavaを置き換えるのと同じ方法です)。
C#でそれを行おうとしているOouiという名前のプロジェクトがすでにあります。
VB.NETも同じことを行う必要があり、SilverLight、Blazor、およびOouiで行われた作業を利用して、XAMLおよびVB.NETコードを使用してASP.NETページを設計するプロジェクトがあると思います。 これが今始まると、着実に成長する可能性があります。代わりに、BlazorとOouiが安定するのを待ってから、MSは次のように言います。
申し訳ありませんが、VB.NETが追いつくには費用がかかります!

VBlazor(.vbxaml)を使用すると、VB.NETおよびWPF / UWPの経験があるデスクトップ開発者がASP.NETにスムーズに移行できます。

RazorはC#専用に記述されているため、XAMLまたはFluidなどのテンプレート言語を使用するIMHOはすべてを満足させます。

VBLazorはuwp / wpfデザインビューに似ていますが、2つの分離コードファイルがあります。1つはサーバーvb.netコード用で、もう1つはクライアント(スクリプト)コード用で、MVVMパターンを使用して大規模なプロジェクトを整理できます。 XAMLはhtml5に準拠し、XamlスタイルはCSSにコンパイルされ、VB.NETスクリプトコードはWebAssemblyにコンパイルされます。

残念ながら、ASP.NET Core用のVB.NETプロジェクトテンプレートを追加する意図がないことは明らかであるため、これを終了します。

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

最後に:動作するVB.NET ASP.NET MVCコアかみそりのサンプル!
https://github.com/VBAndCs/VB.NET-Razor
VbRazorプロジェクトに単純なVBRazorViewEngineを実装しました。
プロジェクトでVBRazorViewEngineを使用するために、Startup.ConfigureServicesメソッドに次の2つのステートメントを追加しました。
`` `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

それで全部です!! プロジェクトを実行すると、次のWebページが表示されます。
VBRazor

これは本当に簡単でしたが、もっと作業が必要なので、このプロジェクトに貢献して、本当に生産的なツールにすることを願っています!
最初に行うことは、ASP.NETMVCコア用のVB.NETテンプレートを作成することです。 C#プロジェクトを作成し、それをVBに変換する必要がありました。

次に行うことは、VBのxmlリテラルにhtml属性のインテリセンスサポートを追加することです。

Truth View Engineは、RazorやMarkdownなどで見たような種類のテンプレートを解析する必要がありますが、コードの背後から生成された最終的なマークアップがRazorから生成されたクラスであるため、簡単に実行できます。

@hishamco
ほとんど忘れられているVBXMLリテラルのおかげで、私は数時間でこれを行いました! 提案する新しい構文をいくつか招待しようとした数週間まで、私はそれを忘れていたかもしれません。それで私は書き、編集者は終了タグでそれを完成させました:) ただし、このアイデアを完全な製品にするためにやるべきことはたくさんあります。

https://gitter.im/VB-NET/Volunteer
ありがとう。

Xmlリテラルは、VBだけが持つ非常に優れた機能です。 vbhtmlに関しては、時間と労力が必要です。私は過去から興味を持っている人の1人です。これをすぐに始められることを願っています。

こんにちは、みんな、
これは機能的なVBかみそり(Vazor)です。 楽しんで:
https://github.com/VBAndCs/Vazor

こんにちは、みんな、
この提案をサポートしてくださいhttps://github.com/aspnet/AspNetCore/issues/9270
vbhtmlページを作成する簡単な代替手段になる可能性があります。

@VBAndCs 、古いクローズされた問題への投稿は避けてください。 ASP.NET Coreのバグと機能要求についてこの問題追跡システムを維持し、他の議論を最小限に抑えるようにしています。

@エイロン
申し訳ありませんが、これはまだ存在しない機能リクエストです。 閉鎖されても気になることはありませんが、それでもグーグル検索でポップアップするので、このトピックに関するすべての関連情報をまとめておくことが重要です。
とにかく、これはこのトピックでの私の最後の応答です。
ありがとう

@ VBAndCs@ Eilon (Github bioによると、開発者ではなくMicrosoftマネージャー)の

@mevdschee
ご協力ありがとうございました :)。 @Eilonは、1日に何百もの通知、修正するバグ、行うディスカッション、回答する質問、拒否する提案など、大きなプレッシャーに
それで、私は私のmew提案でこのトピックを参照します(VB.NETがその正しい場所を復元するまで彼らが来続けることを願っています:))。
Eilonが重要な提案について話し合うか、少なくともしばらくの間それらを開いて、コミュニティがすぐに閉じるボタンにジャンプするのではなく、それらについて話し合うことができるようにしてください。
おかげで再び@mevdschee、と申し訳ありません@Eilon :)

私の意見では、適切な完全な解決策は強制されることなくロードマップ上にあるべきだったので、私は長い間このスレッドをフォローしてきました。 @VBAndCsが懸命に取り組んだ後、 がっかりました。 プレッシャーは大きいと思いますが、それでもフォローしているということは、多くの人にとって重要なことです! 良い仕事を続けてください:)

皆さんこんにちは、

コミュニティの活動と機能を強くお勧めしますが、特定の機能のリクエストやバグ修正は、実装するのに十分な優先度がないため、受け入れることができません。 これには、テストとドキュメントを含むプルリクエストがある場合も含まれます。 サイズを変更する場合は、長期的なコストを含むコストがかかります。これと、検討している他のすべての潜在的な作業とのバランスを取る必要があります。 ビューエンジンに関しては、C#をサポートし、Visual Studio、Visual Studio for Mac、およびVisual Studio Codeで優れたエディターエクスペリエンスを提供するRazorビューエンジンに100%取り組んでいます。

@VBAndCsなどの人々にとって、ASP.NET Coreと連携し、さまざまな方法で統合する追加のプロジェクトを作成する絶好の機会があると信じています。 MVC readmeなどのreadmeファイルにPRを送信してもらうことで、これらのプロジェクトにリンクできることをうれしく思います。

ありがとう、
エイロン

@ simonmilne80mevdschee 、および興味のある人へ:
zmlページの実用的な例をリポジトリに追加したので、このトピックについて議論してみましょう:https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
@Eilonに平和の瞬間を与えて

ところで、今後のASP.NET CommunityStandupにVazorについての言及を追加することを検討してい

@エイロン
返信が遅れてすみません。 最初に作業を完了し、ZMLタグに関する基本情報を含むreadmeファイルを作成する必要がありました。
ZML 1.0には、独自のリポジトリNuGetがあります。
ZMLについて言及する場合は、言語に依存しないため、適切です(リポジトリには、c#とVBの2つのバージョンのプロジェクトサンプルが含まれており、どちらも同じ.zmlファイルを使用します。
ありがとう。

これはすでに起こった! https://github.com/VBAndCs/Vazor/issues/1

VB.NETWebFormsアプリを.NETCore RazorPagesに変換することを検討しています。 VBがサポートされない場合は、代わりにどの最新のASP.NETパスに移行する必要がありますか? C#でアプリを書き直すことはできません。

@Gruski 「ライブラリ」コードであるVB.NETコードがたくさんある場合、つまりWebForms固有ではない場合、.NET Core / Razor Pages / Blazorの世界ではすべて正常に機能します。 はるかに多くの作業が必要なのは、WebFormsとRazor(およびBlazor)の部分です。

開発者がWebFormsからBlazorに移行するのに役立つ電子書籍のプレビューをリリースしました。

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

そのため、アプリの一部をVBに保持することが可能であり、UIのみがC#である必要があります。

そのため、アプリの一部をVBに保持することが可能であり、UIのみがC#である必要があります。

UIにもVB.NEtプロジェクトを使用できます。 cshtmlファイルのみにC#チャンクが含まれます。 C#コードを避けたい場合は、VB.NEtでxmlリテラルを使用して、Vazorプロジェクトで行ったようにUIを設計できます。
https://github.com/VBAndCs/Vazor-DotNetCore2
Anthony Greenは、彼のブログの最後のトピックでわかるように、これを別のレベルに引き上げました。
https://anthonydgreen.net/
またはここ:
https://github.com/dotnet/vblang/issues/483
また、C#とVBの両方を回避し、純粋なXML Razor(ZMLと呼びます)を使用するために、XMLタグコマンドを使用することを提案しました。
https://github.com/VBAndCs/ZML

私たちのプロジェクトはWebFormsプロジェクトですが、当初の意図どおりに使用していません。 これは古いが大規模なエンタープライズアプリケーションであり、長年にわたって、ページの背後にある各.aspxコードにあるWebMethodsを呼び出すVue.jsクライアント側フレームワークのみを使用するように変換されてきました。 つまり、サーバーコンポーネント(runat = "server"は何もありません)、ビューステート、ページ全体の投稿( "form"要素はありません)はありません。 一部のVueクライアント側コンポーネントを動的に初期化するLoadメソッドを除いて、背後のコードにはWebMethodsのみが含まれています。

これを念頭に置き、.NET Coreに移行する必要があることを考慮して、WebFormsから離れたい場合、プロジェクトをどの新しいASP.NETテクノロジに移行する必要がありますか? Vue.jsはすでにクライアント側にMVCパターンを持っているので、私にはMVCは意味がありません。これは私の意見ではよりエレガントですが、なぜサーバーでそれが必要なのですか? Blazorは、UI全体を書き直す必要があるため、意味がありません。

@Gruski RazorPagesをお勧めします。 開始は非常に簡単です。ASP.NETCoreアプリでPagesフォルダーを作成し、それに.cshtmlファイルを追加し始めます。 各ページは基本的にURLであり、任意のHTMLをページに挿入してから、サーバーロジックに必要なC#を追加できます。

開始するには、このチュートリアルを試してください: https

@Eilon Razor Pagesには、WebMethodsを配置するためのコードがありますか? そうでなければ、WebMethodsはどこに配置されますか? それを見ると、Vueを使用するときに冗長である、バックグラウンドでサーバー側MVCパターンの簡略化されたバージョンをまだ使用しているように見えます。 また、RazorPagesではVBはサポートされていません。

RazorPagesはWebMethodsをサポートしていません。 これらの方法にはMVCを使用することをお勧めします。 同じアプリでRazorPagesとMVCを混在させることができます。

@Gruski私は旅行していて、追いついています。

Vuew.jsにUIがある場合、ASP.NET Core MVC / WebAPIを使用できますか? これは正常に機能します。 この記事はAngularを含めることについて少し詳しく説明していますが、一般的な手法を示しています//devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern- web-apps /

サポートに関する問題には2つの領域があります。

  • RazorはVisualBasicではサポートされていませんが、 @AnthonyDGreenはどちらも、 考案しました。
  • ASP.NETWebAPIのテンプレートはありません。
このページは役に立ちましたか?
0 / 5 - 0 評価