如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?

2023-11-24

我的任务是对 2009 年开发的 Web 应用程序进行现代化改造。它是用 VB.NET 编写的,并使用 ASP.NET WebForms。我想使用 VB.NET 中最新的语言结构。

我得到有用的指示,说“Visual Basic 10.0 不允许字符串插值”,这正是我试图使用的,但我未能找到提高语言水平的方法。

我有这个相关问题的提示如何在 Visual Studio 2015 中更改 VB.NET 语言版本,但他们在这方面没有帮助。

在 ReSharper 属性中,我可以将四个不同项目的“VB 语言级别”设置为“Visual Basic .NET 15”。这会更改项目的 .DotSetting 文件中的一行 XML,并且此设置会更改 ReSharper 分析代码的方式,但可惜的是,这确实做到了not消除编译错误。

如何在 Visual Studio 2017 中启用对 ASP.NET 网站或 Web 应用程序项目中最新版本 VB.NET 的支持?


要将最新的 VB.NET 或 C# 与 ASP.NET Web 应用程序和网站项目一起使用,您需要安装或更新两个 Rosyln Nuget 包。

微软:

当您打开一个解决方案,其中至少有一个 Web 项目 面向 .NET 4.5+ 并且没有 DotNetCompilerPlatform NuGet 包在项目菜单中您将看到一个新选项,启用 C# 6 /VB 14 出现。

以下截图来自VS2015,但选项VS2017 中也应该存在:

enter image description here

或者,绕过上述 GUI 功能,直接转到 Nuget 包管理器,并将以下包的最新版本安装到项目/站点中,以便尽可能与 VB.NET 语言保持同步。 :

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.编译器

(注意最新版本是要求严格.NET 4.6+ 是已安装编译器运行的系统上,但可以编译针对任何平台的代码)。

这可能会让您对 C# 6/VB 14 进行排序。获得 VB 15 的最后一步是:编辑 web.config 文件中的 langversion,使其读取15.0 (or latest如果您想使用最新版本 - 这是我的首选)。

<system.codedom>
  <compilers>
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:15.0 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
 </compilers>

不幸的是我发现自己必须编辑langversion将我的 Roslyn 升级到 C# 7.0,然后升级到 7.1 后,这绝对是值得关注的事情。

顺便说一下,这个答案不仅仅适用于old项目 - 如果使用的模板不引用 Nuget 编译器包,即使是在 VS 2017 中创建的新 Web 项目也需要此修复。 Roslyn 不是强制性的,例如模板据报道,新网站尚未更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别? 的相关文章

随机推荐