要将最新的 VB.NET 或 C# 与 ASP.NET Web 应用程序和网站项目一起使用,您需要安装或更新两个 Rosyln Nuget 包。
微软:
当您打开一个解决方案,其中至少有一个 Web 项目
面向 .NET 4.5+ 并且没有 DotNetCompilerPlatform
NuGet 包在项目菜单中您将看到一个新选项,启用 C# 6
/VB 14 出现。
以下截图来自VS2015,但选项VS2017 中也应该存在:
或者,绕过上述 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=\"Web\" /optionInfer+"/>
</compilers>
不幸的是我发现自己必须编辑langversion
将我的 Roslyn 升级到 C# 7.0,然后升级到 7.1 后,这绝对是值得关注的事情。
顺便说一下,这个答案不仅仅适用于old项目 - 如果使用的模板不引用 Nuget 编译器包,即使是在 VS 2017 中创建的新 Web 项目也需要此修复。 Roslyn 不是强制性的,例如模板据报道,新网站尚未更新。