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

How can I use the latest VB.NET language level in an ASP.NET web site project?(如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?)
本文介绍了如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我得到了有用的提示,说Visual Basic 10.0 不允许字符串插值",这是我尝试使用的,但我未能找到提高语言水平的方法.

我在这个相关问题中有提示

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

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

(NB 最新版本 要求 .NET 4.6+ 是安装系统上供编译器运行,但可以编译针对任何平台的代码.

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

<编译器><编译器语言=vb;vbs;visualbasic;vbscript"扩展=.vb"type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,版本=1.0.8.0,文化=中性,PublicKeyToken=31bf3856ad364e35"warningLevel="4" compilerOptions="/langversion:15.0/nowarn:41008/define:_MYTYPE=&quot;Web&quot;/optionInfer+"/></编译器>

不幸的是,在将我的 Roslyn 升级到 C# 7.0 和 7.1 之后,我发现自己不得不编辑 langversion,所以这绝对是值得关注的事情.

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

I've been tasked with modernising a web application developed in 2009. It is written in VB.NET and using ASP.NET WebForms. I would like to use the latest language constructs in VB.NET.

I get helpful pointers saying "Visual Basic 10.0 does not allow string interpolation", which was what I was trying to use, but I failed to find a way to raise the language level.

I have the tips in this related question How to change the VB.NET language version in Visual Studio 2015, but they did not help in this context.

In ReSharper properties, I could set the "VB Language Level" for each of the four different projects to "Visual Basic .NET 15". This changes a line of XML in the project's .DotSetting file, and this setting changes how ReSharper analyzes the code, but alas, this did not take away the compilation errors.

How do I enable support in Visual Studio 2017 for the latest version of VB.NET in an ASP.NET Web Site or Web Application project?

解决方案

To use the latest VB.NET or C# with ASP.NET Web Applications and Web Sites projects you need to install or update two Rosyln Nuget packages.

Microsoft:

When you have a solution open which has at least one web project which is targetting .NET 4.5+ and does not have the DotNetCompilerPlatform NuGet package in the Project menu you’ll see a new option, Enable C# 6 / VB 14 appear.

The following screenshot is from VS2015 but the option should be present in VS2017 too:

Alternatively, bypass the above GUI feature and just go directly to the Nuget package manager and install the latest version of the following packages into the project/site to be as up-to-date with the VB.NET language as it is possible to be:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

(NB The latest releases are demanding .NET 4.6+ is installed on the system for the compiler to run, but can compile code targeting any platform).

This will likely get you sorted for C# 6/VB 14. There is one last step to get VB 15: edit the langversion in the web.config file so that it reads 15.0 (or latest if you want to be on the newest version - this in my preferred option).

<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>

Unfortunately I have found myself having to edit the langversion after upgrading my Roslyn to C# 7.0 and then to 7.1 so it is definitely something to look out for.

By the way, this answer doesn't just apply to old projects - even new web projects created in VS 2017 need this fix if the template used doesn't reference the Nuget compiler packages. Roslyn is not mandatory and the template for e.g. a new Web Site has reportedly not been updated.

这篇关于如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)
How to Create such a Task Panel?(如何创建这样的任务小组?)