我已经找到了与此相关的其他问题,但似乎没有一个我正在寻找的东西.
我有一个在ASP.NET Core上运行的网站,其中包含VS2017中的新项目结构.使用C#7的代码文件功能编译正常.但是,尝试在View中使用这些功能会导致一系列有关语法的错误.我尝试安装Roslyn以便在编译视图时使用它,因为我可以告诉我,Roslyn nuget包2.x及更高版本中提供了C#7功能.但现在我得到明确说明的反馈
error CS8059: Feature ‘out variable declaration’ is not available in C# 6. Please use language version 7 or greater.
在过去,我会检查web.config,但是在ASP.NET核心项目中没有web.config,而是根目录中的几乎空的,用于处理来自IIS的请求.
我如何表明我的视图应该用Roslyn编译,因为直到运行时才能完成?至少我认为这会解决我的问题.
编辑:
这个问题并不重复,正如我在开始时提到的那样,我也在寻找现有问题.这是在编译时在您的应用程序中专门启用C#7功能,并且仅适用于ASP.NET应用程序.我正在使用ASP.NET Core,它没有web.config,其中定义了任何编译设置.另外,我正在尝试为在运行时编译的视图执行此操作,并且可能在不同的系统上.
解:
对于任何感兴趣的人,您必须将Roslyn添加到您的项目中(我知道),但您还必须配置RazorViewEngineOptions以使用指示语言版本的CSharpParSEOptions(默认值为6).我做过这个,但我做得不对.我需要将WithLanguageVersion()的结果分配回ParSEOptions的顶部以替换它们.
services.AddMvc().AddRazorOptions(options => options.ParSEOptions = options.ParSEOptions.WithLanguageVersion(LanguageVersion.CSharp7));