How can I use the latest VB.NET language level in an ASP.NET web site project?(如何在 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="Web"/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="Web" /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 语言级别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 ASP.NET 网站项目中使用最新的 VB.NET 语言级别?


- C# 通过连接字符串检索正确的 DbConnection 对象 2022-01-01
- 在 C# 中异步处理项目队列 2022-01-01
- 为什么 C# 中的堆栈大小正好是 1 MB? 2022-01-01
- CanBeNull和ReSharper-将其用于异步任务? 2022-01-01
- Azure Active Directory 与 MVC,客户端和资源标识同一 2022-01-01
- Windows 喜欢在 LINUX 中使用 MONO 进行服务开发? 2022-01-01
- 带问号的 nvarchar 列结果 2022-01-01
- 在 LINQ to SQL 中使用 contains() 2022-01-01
- 使用 rss + c# 2022-01-01
- 是否可以在 .Net 3.5 中进行通用控件? 2022-01-01