Aspnetcore: ASP.NET Core中的Visual Basic .NET(VB.NET)支持

创建于 2018-01-03  ·  91评论  ·  资料来源: dotnet/aspnetcore

在过去的几年中,有很多关于ASP.NET Core中的VB.NET支持的问题。 如果您遵循它们,它们都将导致死胡同-要么关闭而没有任何实际响应,要么它们被移动到与ASP.NET Core无关的其他存储库(例如dotnet组织中的某个位置)。

在那段时间里,一直在谈论支持VB。 完全可以理解,ASP.NET Core从一开始就不支持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.NET 5将完全支持Visual Basic(工具和运行时–包括跨平台运行时支持)。
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.NET Core添加VB模板
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

VB支持似乎已经从

“这还行不通,但我们计划允许VB”

“将完全支持VB!”

“不支持VB,但不要告诉任何人”。

所以我的第一个问题是:

发生了什么事,为什么没有与社区宣布或讨论此事?

从在官方博客文章中宣布对ASP.NET Core中的VB.NET的支持,到根本不提供反馈而完全不支持,这似乎很奇怪。 关于这个有什么公告吗? 如果有的话,它肯定不会被广泛出版。

我的下一个更重要的问题是:

VB社区可以做什么来帮助将对VB.NET的支持添加到ASP.NET Core?

是否有我们可以编写的项目模板?
是否可以实现代码生成器?
我们如何使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回购中将VB与.cshtml一起使用,因为那时我没有看到任何操作😟。
几周前,我从@DamianEdwards那里看到了一个很好的例子,在这里展示了一个狂热的VB ASP.NET Core应用程序

除了@reduckted出色的总结外,Microsoft的ASP.NET Core Razor语法文档(截至2017-10-18)仍然具有对Visual Basic和使用.vbhtml文件的大量引用:

此限制不适用于.vbhtml Razor文件,因为Visual Basic语法在通用类型参数而不是括号周围放置了括号。

但是ScottAddie @ MSFT在2017-07-21发表了评论:

ASP.NET Core尚不支持VB.NET。 您现在需要坚持使用ASP.NET。

那么,Visual Basic / vb.net / .vbhtml文件是否将包含在.Net Core中? 如果是,什么时候?

我们如何帮助实现这种支持? 我希望看到VB.Net和F#支持!

我发送了一个PR来从ASP.NET Core文档中删除VBHTML引用: https :

当前尚无计划将VBHTML支持引入ASP.NET Core。

我们确实有ASP.NET Core的F#模板,这些模板是作为.NET Core SDK的一部分安装的。

@Eilon当前尚无计划向ASP.NET Core引入VBHTML支持。

就我个人而言,我并不担心VBHTML支持,因为我不使用Razor页面,也不打算这样做。 如@AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626)所述,向其中添加VB支持是没有意义的,因为它在MVC 5中很少使用,并且我想,要花费很多工作并不会带来很多收益。

@Eilon我们确实有ASP.NET Core的F#模板,这些模板是作为.NET Core SDK的一部分安装的。

好的,但是我不确定您要说的是什么。 如果有的话,这是否只是在强调也应该有VB模板这一事实?

F#社区不是创建的F#模板吗? 如果Microsoft的团队不会创建VB模板,那么为什么VB社区不能创建VB模板?

@reduckted问题归结为对它的需求和它的成本-初始成本和持续成本。 如前所述,需求一直很低。 创建初始模板集的成本可能不高,但是必须维护它们。 使用F#,我们在Microsoft的人员致力于维护他们。 目前我们没有VB这样的人。

同样,F#模板的局限性在于它们更多地侧重于API方面。 也就是说,没有Razor或CSHTML(因为没有FSHTML)。 对于VB用户,我的猜测是,大多数使用VB的用户都希望获得MVC的VBHTML体验,并且制作该产品的成本是巨大的-几个月又几个月的工作。 因此,我不清楚添加有限的VB模板是否特别有价值。

@Eilon对于VB用户,我的猜测是,大多数使用VB的用户都期待MVC的VBHTML体验...

您可能想与@AnthonyDGreen交谈,因为那恰好是他在我先前链接的评论(https://github.com/dotnet/vblang/issues/238#issuecomment-354927626)中所说的内容的_opposite_。 这次我会引用它(重点是我的):

MVC 5中的.vbhtml剃须刀引擎未移植到Core上,主要是因为在5个版本之后,只有不到1%的VB网络项目使用了它

@reduckted-有趣的是,这对我来说是个新闻。 我回想起Web Forms的日子,它最初是用VB开发人员(特别是VB6)熟悉的概念设计的,而Web Forms是以HTML为中心的(sorta),因此让我认为VBHTML是对那群人来说最有趣。 再说一次,那是大约15年的anec数据😄

顺便说一下,顺便说一句,我们没有说过我们永远不会这样做-只是它目前没有任何计划。

我是VB粉丝😄,我希望.vbhtml是开箱即用的,我之前提到的混合方法对于所有VB家伙来说还不够,但是在某些情况下还可以。 我的问题是重新实现Razor以发出VB而不是C#是可行的,还是MVC与cshtml C#紧密耦合?

@hishamco不幸的是Razor的实现是为了使VB和C#是分开的路径。 我已经和一些参与其中的人进行了交谈,这是一个很大的项目。

@KathleenDollard还有其他.NET Core项目支持针对.pug.md文件类型的自定义ViewEngine。

当然,我们可以使用带有<Project Sdk="Microsoft.NET.Sdk.Web">的.vbproj使它适用于.vbhtml razorpages文件。

@ tb-mtg如果您想探索它并查看那些项目做了什么,它们都是开源的。 编写它的人告诉我,这是很大的努力。 努力的规模以及MVC早期版本中vbhtml的极低采用率使得它很难出售。

@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

MVC 5中的.vbhtml剃须刀引擎未移植到Core上,主要是因为在5个版本之后,只有不到1%的VB网络项目使用了它。

其余的99%会使用什么呢?

我认为是Angular或其他类似的前端库。 那就是我用的

实际上,这也正是我计划将新的Web项目从ASP.Net MVC Razor迁移到Angular时要做的事情,我今年必须做4个新的Web项目,所以如果有人继续计数..大声笑

VB多年来一直是一种流行的语言! 作为一家公司,我们当然有很多代码片段,我们不需要用C#重写。我确定有许多旧式Web表单应用程序将要重写,尤其是随着新的欧盟规则的生效,这将意味着非常需要VB! 我发现微软对VB如此热烈的抨击令人惊奇,它在一分钟之内被开发出来,其次是可怜的亲戚! 是的,即将出现新的语言和框架,但不要放弃流行的旧语言和框架!

很高兴在这里进行了跟踪,希望以后能看到一些动作。

MS的所有迹象(狡猾的话)都是他们打算对VB.NET进行愚弄,并且/或者什么也不做,等待其他人写下丢失的位。 我不满意他们的狡猾话,现在我要退出VB.NET开发。

我只是希望,当微软收购GitHub时,不会像VB.Net那样得到同等的待遇(被遗弃并得到全面支持的空洞承诺)。

@NatShaw我是Visual Basic.Net的PM。

我不确定您打算精简VB.NET是什么意思,但是目前还没有计划这样做。 Visual Basic语言策略保持不变。

VB的剃刀有问题。 对于主要的开发工作流程, WebAPI是VB的一种很好的工作流程,如下所示。 (除了模板)

@ tb-mtg VB.Net没有死。 不断的改进-语言和IOperation等方面的小改进使Roslyn分析仪中对Visual Basic的支持易于在整个生态系统中支持VB。 的确,VB专注于已经很好的方案,并使用适当的新方案,而不是所有新方案。 例如,Scott Hunter已经宣布VB.Net将与.NET Core 3配合使用。

@KathleenDollard片段已经丢失2.x-所有VB模板在哪里? 可空的引用类型? 仅C#。 未来的计划对未来很有帮助,但是VB现在已经缺少东西了。

这是Microsoft创建和放弃一项伟大技术的主题。 他们正在放弃VB,VB是建立公司的语言,并成为仅C#的商店。 引入新技术后,我希望所有语言都受支持。 令人遗憾的是,这个新的Microsoft在保持所有语言平等的合作伙伴方面做得还不如15年前。 太糟糕了,我有成千上万的VB行,并希望使用asp.net核心与它跨平台。 现在在asp.net核心中已放弃了Web表单,而没有VB了。 我可以更改语言或??。 如果我确实尝试更改语言,那将是除Microsoft之外的其他语言,这将是为支持所有平台而构建的语言。 我厌倦了成为一名出色的VB开发人员而被打折和被解雇。 在使用和销售Microsoft平台和语言30年之后,也许是时候采用我的公司和代码离开Microsoft。 .net管理人员对VB的屈尊态度越来越高。 如今,仍然有很多我们在VBer中使用的Microsoft,这些天对Microsoft感到非常失望。 如果将VB设为开放源代码更好,那么社区可以在所有平台上进行改进。

@SrqComputerguy他们正在放弃VB

错误。 @KathleenDollard在一天前的这个(评论)

@SrqComputerguy太糟糕了,我有成千上万的VB行,并希望使用asp.net内核与其跨平台。 现在在asp.net核心中已放弃了Web表单,而没有VB了。

Web表单是一种古老的技术(按软件标准来说实际上是古老的),因此毫不奇怪,.NET Core(使用VB.NET或C#)不支持它。 请参阅本周初的博客文章,了解如何将VB.NET与ASP.NET Core一起使用。

@SrqComputerguy如果我确实尝试更改语言,这将是除Microsoft以外的其他语言,这将是为支持所有平台而构建的语言

VB.NET是跨平台的,只是没有Web表单。

@SrqComputerguy如果将VB设为开放源代码更好,那么社区可以在所有平台上进行改进。

is是的。 https://github.com/dotnet/vblang

@reduckted C#具有“ ASP.NET Core Web应用程序”模板

策略已经是VB不再是一等公民-不变! @KathleenDollard链接的文章颇具侮辱性,告诉我们这些闪亮的新功能对我们

  • VB 15附带了C#7.0的新功能的子集
  • 我们将把创新重点放在VB流行的核心方案和领域上。
  • 但是,VB 15没有获得is-expressions,out-variables和local function等功能,这可能对VB的可读性造成的危害大于好处,并大大增加了其概念计数。

结束了。 他们愚弄了下来。

旧技术并不意味着它没有用。 WebFroms非常适合不需要SEO但需要跨平台的业务应用程序。 WebForm使winform版本的外观与行为相似。 那也有许多运作良好的业务场景。 并非所有内容都必须是C#MVC angular.js应用程序,也不应该如此。 但这是MS目前正在改进的唯一工具。

为什么剃刀页面(为.net更新了asp页面)在核心而不是VB中获得C#的喜爱?

MS甚至购买了Mono项目,因此现在它首先支持C#,并且只有在他们确定的前提下,VB才会在这里获得一些支持。

MS给了Python比VB更多的爱。 Python比C#或VB更像是一种跨平台语言,而VBer可能会在将来使用。

令人遗憾的是,MS依赖的语言仍然不知道如何在没有结束的情况下判断行尾;

MS甚至还有VB团队吗? 他们没有网络。 为了取得进步,我们将不得不寻找其他地方。

持续的时间很好。 VB RIP。

你好

Microsoft有人可以重新考虑在剃刀视图(.net核心)中编译vb的努力吗? 我认为项目开发者提供了一种新方法,可以在vb中共享许多现有代码以创建新的Web应用程序。

VB .NET再次受到欢迎,因为您可以执行与C#相同的操作。 我认为,如果将vb留在后面,则可以有效地结束它的流行。

我们正在将非常大的VB winforms应用程序移植到Web应用程序。 我们用JS重写框架的方式占了50%,但是凭空说来,它会更快,更干净,并且我们可以共享许多现有代码。 如果我们还可以使用VB而不是C#编写视图,那就太好了。 并不是所有的东西都是MVC和剃须刀。

因此,也许专注于火把可以使工作量减少?

在不得不使用现代和旧式VB代码几年之后,我已经迫不及待了冗长的细节。 我认为Microsoft专注于一种样式的语言(C)是明智的。

@mcurros

已经考虑并重新考虑了剃刀的支持。

尽管这非常令人兴奋,但Blazor目前只是一项实验性尝试,没有产品计划。 我同意,如果Blazor成为产品,则值得重新考虑VB的故事,我希望这种情况会发生。 我不知道这是否会导致有关VB支持的策略发生变化。

给您三个问题:

  • 有关WinForms升级到.NET Core 3的公告是否使您重新考虑移植WinForms代码的决定?

  • 您正在为网络重写。 您是否正在使用这样的VB WebAPI后端:结合Angular,Visual Basic和.NET Core来开发现代Web应用程序

  • 您正在使用JS,这意味着您团队中的某些成员正在有效地使用大括号语言。 您不转换为C#的原因是什么?

在C#中,没有什么可以完全在VB中完成。 MS制造IL转换器。 这是意志的问题。

这是您的问题。 如果您拥有大量具有Web版本.net 4.5.2的业务应用程序,这些应用程序的外观和行为类似于台式机版本,那么MS建议它们跨平台使用。

那么,微软在愚弄将VB开发人员纳入Asp.net Core浪潮的想法是愚蠢的,而又不愿意为此花费资源吗?

@ sreenathGanga1988我们宣布,目前尚无计划在Visual Basic.NET的.NET Core中支持Razor。 支持ASP.NET Core中作为MVC一部分的WebAPI。 仅不支持Razor。 Razor引擎很复杂,并且是为单一语言创建的。

@KathleenDollard,您可以创建VBHTML.Contrib以允许VB粉丝使用当前的Razor Engine支持VB来构建剃刀引擎。

撰写新版本的Razor的人们认为,包含Visual Basic非常复杂,因为它不是为多种语言设计的。 我没有看过代码,但会相信那些人的意见。 基于此,我不会创建叉子。

但是,ASP.NET是开放源代码是有原因的。 如果一群VB开发人员要在任何地方创建一个fork并证明它们是错误的,那将是一件很酷的事情。 我很高兴在此存储库中遇到这个问题或另一个问题,如果需要,我会发推文说它的存在和进步。

我已经为.NET Foundation奠定了Visual Basic空间的基础(可能做出了贡献,可能还有其他事情),以便为Visual Basic社区中的项目管理所有权和此类管理内容。 但是,他们需要证据表明,有一个社区将提供回购协议来提供人们想要的东西(基金会致力于避免死项目)。 我曾希望Entity Framework模板能成为种子,但是进展并不顺利。 这不是具体到VB和就是为什么你看到在个人仓库的东西:在@bricelam VB EF模板,在@natemcmaster全球工具目录,并在命令行分析器@natemcmaster的分支版本,而我们在一个新的工作。

因此,尽管一个项目和原型不足以引起Foundation的兴趣,但是如果出现了成功的项目,则可以将其移至.NET Foundation。

感谢您的澄清,但我仍然不确定为什么Razor仅在Roslyn可以支持两者时才针对C#进行构建!

我没有看过Razor代码以了解它是否直接构建语法树,但假设它确实可以...

Roslyn使用特定的,显式的原始语法树,这些语法树对于C#和VB是不同的。 例如,C#中存在sei-冒号和花括号,而不是VB。 End Sub和Handles存在于VB中,而不存在于C#语法树中。

@凯瑟琳·多拉德

是的,我了解项目blazor是试验性的,但是它可以编译为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核心,不是第一个实验项目吗?

为了增加一些背景信息,我们针对不同的业务部门移植了三个关键任务型ERP。

问候。

@mcurros

感谢您分享有关您的情况的更多信息。

Razor引擎已针对ASP.NET Core进行了重写,因此没有为多种语言付出任何努力。 驱动剃须刀之一是VB版本的Razor引擎使用率低。 是的,Blazor的存在使该决定非常痛苦。

@凯瑟琳·多拉德

感谢Kathleen分享这些见解。 我希望.NET中的语言不会开始相互竞争,.NET最具吸引力的事情之一就是它们之间的语言和互操作性,现在看来情况已不再如此。 现在选择.NET作为开发堆栈还不够,我想我们也需要注意选择的语言。 可惜,感觉就像是退步了。

不过,在最后一个问题上,我认为razor早于.NET核心编写,带有ASP .NET网页和webmatrix,所以我想您的意思是说,剃须刀引擎是在面向C#的.NET核心中重写的。 我对吗?

祝你好运。

你好,
我发现了这篇文章:为什么不剃刀?
您如何考虑完全避免在ASP .NET Core和Blazor项目中完全使用Razor语法,而转而使用纯C#和VB.NET开发? 是否确定需要Razor语法来开发需要发出HTML5和CSS文件的Web应用程序?

问候,
菲利波。

@filippobottega

哦,那是在烈火之前。 问题在于您需要在客户端使用模板引擎,而对于blazor而言,仅此而已。 在blazor中,razor在浏览器中执行而不是在服务器中执行(但如果需要,它可以在服务器上执行)。 因此,人们一直试图在浏览器中的客户端和服务器之间共享代码。 共享验证代码将是一个简单的例子,但是在我们的例子中,我们共享描述模型的元数据,以便组件可以使用该元数据进行自我配置。

因为您可以在浏览器和服务器之间共享代码,所以Node.JS变得流行起来。 那么,为什么不在浏览器和服务器之间共享.NET代码呢? Razor会使用您的共享代码编译到Web程序集,仅此而已。 是的,您可以编译,运行和分发您的应用程序,但是浏览器具有更好的跨平台功能,并且您将使用相同的代码定位更多平台。 如果您希望将WPF编译为webassembly,我也曾经看到过。

我们更喜欢利用现有的JS组件,并将它们与.NET库混合使用,但我们更喜欢.NET和razor来替代其他JS框架(例如angular)。 如果您知道自己在做什么,至少对我们来说,生产率提高了10倍。

问候。

@mcurros是的,在ASP.NET Core(包括Razor)中进行了大量的工作/重写(以管道模型为例)。

@mcurros好的,确实,我们需要模板引擎,但问题是可靠的WYSIWYG设计人员不支持Razor语法。
例如,Blazor使用Bootstrap作为CSS库。 Boostrap有一个有趣的设计师,名为Bootstrap Studio,但它不支持Razor语法。
对于WinForms桌面应用程序,有一个很好的WYSIWYG设计器可以快速设计接口,与XAML相同。 我们可以使用一位设计师使用Razor语法视图(.cshtml / .vbhtml)快速创建HTML5-CSS吗?

@filippobottega
因为可以运行浏览器的设备大约是10K,所以我认为制作准确的WYSIWYG工具可能不值得。 这些天的趋势是在浏览器中运行它,然后让浏览器进行渲染。 Blazor示例使用Bootstrap,但是razor是一个模板引擎,您可以发出所需的内容以及所需的CSS / HTML框架。 有趣的部分包括Web汇编的编译以及提供SPA路由的改进的剃刀,以及构建SPA客户端所需的所有功能。 另外,如果需要,您可以在服务器上进行渲染(用于公共网站和搜索引擎索引)。 我认为这很酷。

因此,blazor提供了实时的Webassembly编译,并可以在浏览器中按F5运行。 快速,尝试一下。

@mcurros谢谢您的回答。 即使我认为使用浏览器预览通过拖放来更改模板结构的可能性可能确实有用,我也同意。
如果考虑一下开发人员预览版,其中的组件可以通过拖曳末端移动,调整大小并嵌入到其他组件中,那么最后更新CSHTML模板。
例如, Concrete5可让您即时更改布局。
让我知道您是否认为将来可以采用“设计模式”。

最好的祝福,
菲利波。

我认为VB不会成为未来:
微软终止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/

现在必须重写2.5亿行代码,其中一半仍在使用中。 VB.Net之所以被杀,是因为最新一代的程序员对语言本身(以及将其与Visual Basic进行比较的所有白痴-苹果与Oranges)一无所知,而在性能和其他向量上却进行了错误的比较。 RIP VB.Net和数百万开发人员将因此而失业。

@DamianEdwards一样,我将示例“ ASP.Net Core Web应用程序”从C#移植到VB。 (成功)在VB项目中使用Razor .cshtml文件。 我已经确保它与ASP.Net Core 2.1兼容。 你可以在这里找到它:

https://github.com/mevdschee/aspnetcorevb

@marcusoftnet Damian的示例很酷,可以使用.cshtml来查看视图,并在VB.NET中使用应用程序的其余部分,但是使用.vbhtml来查看视图会很酷😃

我不知道微软的想法,手里有像VB这样的编程语言,能够适应Web上的客户端和服务器端区域

客户端:vbscript
服务器:vb

抛光VB会让您受益,这是可以理解,可以理解和适应的,知道vb.net不在Web上确实是一种伤痛和怀旧之情,但这是您的错,只专注于一个

必应翻译:
我不知道有微软在头,手里有像VB这样的编程语言可以在客户端和服务器端两个区域的Web上使用

客户端:VBScript
伺服器:VB

抛光VB是受益者,是可以理解,可理解和适应的,确实让很多痛苦和怀旧之情得知vb.net不在网络上,但这是您的错,只专注于一个

这将使VB.NET继续受到支持,以添加C#中已经添加的功能,但是再次没有vbhtml 😕

@hishamco不,当我分享您的:( Razor引擎仅支持C#。

剃刀引擎仅支持C#

那就是我的意思😄

Tibor Index显示VB.NET不断增长,无论如何我们都需要VB剃须刀

@DamianEdwards一样,我将示例“ ASP.Net Core Web应用程序”从C#移植到VB。 (成功)在VB项目中使用Razor .cshtml文件。 我已经确保它与ASP.Net Core 2.1兼容。 你可以在这里找到它:

https://github.com/mevdschee/aspnetcorevb

@mevdschee我很好奇您将其移植到VB.NET所经历的过程,因为无法通过Visual Studio获得项目模板,也不提供VSCode的支持。 您是如何做到这一点的?

@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

我同意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脚本(现在在Blazor中C#替换Java的方法相同)是合乎逻辑的。
已经有一个名为Ooui的项目试图在C#中做到这一点。
我认为,VB.NET应该做同样的事情,并且有一个项目使用XAML和VB.NET代码设计ASP.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。

我要结束这本书是因为,很遗憾,很明显,没有意图为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 Core Razor示例!
https://github.com/VBAndCs/VB.NET-Razor
我在VbRazor项目中实现了一个简单的VBRazorViewEngine。
为了在项目中使用VBRazorViewEngine,我将以下两个语句添加到Startup.ConfigureServices方法中:
VB.NET
services.AddTransient(IConfigureOptions(MvcViewOptions),VBRazor.VBRazorMvcViewOptionsSetup)()
services.AddSingleton(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

这确实很容易,但是需要更多的工作,所以希望您开始为这个项目做出贡献,使其成为一个真正的生产性工具!
首先要做的是,为ASP.NET MVC Core创建一个VB.NET模板。 我必须创建一个C#项目,然后将其转换为VB!

第二件事是在VB中为xml文字中的html属性添加智能感知支持!

真值视图引擎需要解析某种模板,就像我们在Razor或Markdown等中看到的那样,但是您所做的却很容易,因为从背后的代码生成的最终标记就是Razor生成的类所做的

@hishamco
多亏了VB XML文字,我在几个小时内就做到了,这几乎被人们遗忘了! 我可能自己忘了它,直到几周后我试图提出一些新的语法建议,于是我写了代码,编辑器用
希望您和其他人对此有所帮助,以便我们可以使用VB.NET编写真正的MVC Cpre应用程序。VB志愿者中有一个空间:https://gitter.im/VB-NET/志愿者
谢谢。

Xml文字是VB仅具有的一个非常好的功能。 关于vbhtml,它需要时间和精力,我是过去感兴趣的人之一,希望我们能尽快开始这一工作

大家好,
这是功能齐全的VB剃刀(Vazor)。 玩得开心:
https://github.com/VBAndCs/Vazor

大家好,
请支持该建议https://github.com/aspnet/AspNetCore/issues/9270
这是创建vbhtml页面的简单替代方法。

@VBAndCs ,请尝试避免在旧的已关闭问题上发布。 我们尝试在ASP.NET Core中保持此问题跟踪器的错误和功能请求,并尽量减少其他讨论。

@埃隆
抱歉,这是一个尚不存在的功能请求。 被关闭不应该打扰您,但它仍会在Google搜索中弹出,因此将有关此主题的所有相关信息保持在一起很重要。
无论如何,这是我对此主题的最后答复。
谢谢

@VBAndCs ,请不要被@Eilon的粗鲁语气

@mevdschee
谢谢你的支持 :)。 我可以想象@Eilon承受着巨大的压力,
因此,我将在我的新建议中引用此主题(我希望它们一直存在,直到VB.NET恢复其应有的地位:))。
我希望Eilon讨论重要的建议,或者至少让它们开放一段时间,让社区讨论它们,而不是立即跳到关闭按钮。
再次感谢@mevdschee ,对不起@Eilon :)

我一直在关注该主题已有很长时间,因为我认为真正的适当解决方案应该在路线图上,而不必强加于此。 尽管看到@VBAndCs的辛勤工作之后,我还是有些@Eilon会试图阻止其他任何人试图帮助这么多人解决这个问题! 我可以理解,压力很大,但是人们仍然遵循这一事实,这对很多人来说很重要! 保持良好的工作 :)

嗨,大家好,

我们强烈鼓励社区活动和功能,但是我们不能接受某些功能请求或错误修复,因为它们不是我们实施的足够高的优先级。 这甚至包括存在包含测试和文档的拉取请求的情况。 进行任何大小的更改都需要付出成本,包括长期成本,并且我们必须在考虑要考虑的所有其他潜在工作之间取得平衡。 在视图引擎方面,我们100%致力于Razor视图引擎,支持C#,并在Visual Studio,Visual Studio for Mac和Visual Studio Code中拥有出色的编辑经验。

我们认为, @ VBAndCs这样的人在这里有很大的机会来创建可与ASP.NET Core一起工作并以各种方式集成的其他项目。 我们很高兴通过使人们将PR发送到自述文件(例如MVC自述文件)来链接到这些项目。

谢谢,
埃隆

@ simonmilne80,@mevdschee任何一个谁是有兴趣:
我在回购中添加了zml页面的工作示例,因此请让我们对以下主题进行讨论:https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
并给@Eilon些许和平:)

顺便说一句,我们希望在即将发布的ASP.NET社区声明中增加对Vazor的提及。 除了GitHub存储库之外,您还有博客文章可以参考吗?

@埃隆
抱歉,延迟了我的回复。 我需要先完成工作,然后编写一个自述文件,其中包含有关ZML标签的基本信息。
ZML 1.0现在拥有自己的repoNuGet
如果您提到ZML,我将不胜感激,因为它是语言无关的(回购包含一个包含c#和VB两个版本的项目示例,并且它们都使用相同的.zml文件。
谢谢。

正在考虑将我的VB.NET WebForms应用程序转换为.NET Core Razor Pages。 如果为true,将不支持VB,那么我应该迁移到哪个现代ASP.NET路径? 用C#重新编写应用程序不是一种选择。

@Gruski如果有很多VB.NET代码是“库”代码-也就是说,甚至不是特定于WebForms的代码,那么在.NET Core / Razor Pages / Blazor世界中,它们都可以很好地工作。 WebForms vs. Razor(和Blazor)部分需要更多工作。

我们确实发布了电子书的预览,以帮助开发人员从WebForms迁移到Blazor:

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

因此,有可能将您的某些应用程序保留在VB中,然后只有UI是C#。

因此,有可能将您的某些应用程序保留在VB中,然后只有UI是C#。

您也可以将VB.NEt项目用于UI。 仅cshtml文件将包含C#块。 如果要避免使用C#代码,可以像在Vazor项目中一样使用VB.NEt中的xml文字设计UI:
https://github.com/VBAndCs/Vazor-DotNetCore2
Anthony Green在博客的最后一个主题中将其带到了另一个层次:
https://anthonydgreen.net/
或在这里:
https://github.com/dotnet/vblang/issues/483
我还建议使用XML标记命令来避免同时使用C#和VB,并使用纯XML Razor(我称为ZML):
https://github.com/VBAndCs/ZML

尽管我们的项目是一个WebForms项目,但我们不再按原计划使用它。 这是一个古老但大型的企业应用程序,多年来已转换为仅使用驻留在页面后面每个.aspx代码中的Vue.js客户端框架来调用WebMethod。 这样就没有:没有服务器组件(没有任何runat =“ server”的东西),没有viewstate,没有完整的页面帖子(没有“ form”元素)。 除了动态初始化某些Vue客户端组件的Load方法之外,后面的代码仅包含WebMethods。

考虑到这一点以及迁移到.NET核心的要求,如果想摆脱WebForms,我应该将该项目迁移到哪种新的ASP.NET技术? 对我来说,MVC毫无意义,因为Vue.js在客户端已经具有MVC模式,这是我的观点,所以为什么在服务器上需要它? Blazor也没有意义,因为那将需要再次重写整个UI。

@Gruski我会推荐Razor Pages。 开始非常容易:只需在ASP.NET Core应用中创建一个Pages文件夹,然后开始向其中添加.cshtml文件。 每个页面本质上都是一个URL,您可以在其中放入任意HTML,然后添加任何用于服务器逻辑的C#。

尝试使用本教程开始使用: https :

@Eilon Razor Pages后面是否有代码可以放置WebMethod? 否则,将把WebMethod放在哪里? 看上去,它似乎仍然在幕后使用服务器端MVC模式的简化版本,这在使用Vue时是多余的。 在Razor Pages中也没有VB支持。

Razor Pages不支持WebMethods。 我建议将MVC用于这些方法。 您可以在同一应用程序中混合使用Razor Pages和MVC。

@Gruski我去旅行了,赶上来了。

如果您在Vuew.js中拥有UI,则可以仅使用ASP.NET Core MVC / WebAPI吗? 这很好。 虽然这篇文章是有点多的,包括角,但它显示的通用技术: https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern-网络应用/

支持有两个方面的问题:

  • 尽管指出@VBAndCs@AnthonyDGreen都为Visual Basic提供了一个可能更好的解决方案,但Visual Basic不支持Razor。
  • 没有用于ASP.NET WebAPI的模板。
此页面是否有帮助?
0 / 5 - 0 等级