当前位置: 首页 > 编程语言 > C#

C#LearningTutorial-UsingC#7functioninsideViewinASP.NETMVCCoreproject分享

时间:2023-04-10 23:54:36 C#

UsingC#7functioninsideViewinASP.NETMVCCoreproject我在找什么。我有一个在ASP.NETCore上运行的网站,它具有VS2017中的新项目结构。代码文件函数使用C#7编译良好。但是,尝试在View中使用这些函数将导致一系列语法错误。我尝试安装Roslyn以在编译视图时使用它,据我所知,C#7功能在Roslynnuget包2.x及更高版本中可用。但是现在我得到了明确的反馈错误CS8059:Thereisnofunction'outputvariabledeclaration'inC#6.Pleaseuselanguageversion7orhigher.以前我会查看web.config,但是ASP.NETcore项目中并没有web.config,根目录下有一个几乎是空的,用来处理IIS的请求。我该如何指示我的视图应该使用Roslyn进行编译,因为这要到运行时才能完成?至少我认为这会解决我的问题。编辑:这个问题不是这个的重复,正如我在开头提到的,我也在寻找现有的问题。这是在编译时在您的应用程序中专门启用的C#7功能,并且仅适用于ASP.NET应用程序。我正在使用ASP.NETCore,它没有定义任何编译设置的web.config。此外,我正在尝试对在运行时编译的视图执行此操作,并且可能在不同的系统上执行此操作。解决方案:对于任何感兴趣的人,您必须将Roslyn添加到您的项目(据我所知),但您还必须配置RazorViewEngineOptions以使用指示语言版本(默认为6)的CSharpParseOptions。我已经这样做了,但我做得不对。我需要将WithLanguageVersion()的结果分配回ParseOptions以替换它们。services.AddMvc().AddRazorOptions(options=>options.ParseOptions=options.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));您可以尝试以下方法(由ASP.NET核心团队的某人推荐):在Startup.cs中的ConfigureServices方法中安装Microsoft.CodeAnalysis.CSharp(2.0.0版)和System.ValueTuple(4.3.0版)包,通过执行以下操作将Razor配置为使用C#7:services.AddMvc().AddRazorOptions(options=>options.ParseOptions=newCSharpParseOptions(LanguageVersion.CSharp7));所以我发现有一些编译选项可以让您调用ConfigureServices()调用。publicvoidConfigureServices(IServiceCollectionservices){//添加框架services.services.AddMvc().AddRazorOptions(x=>x.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));如果不添加Roslyn,问题是LanguageVersion.CSharp7会出错。所以我觉得很有必要。添加Roslyn后,一切编译正常,但视图仍然出错。@{//我的视图代码strings="1";int.TryParse(s,outinti);因此,如果MVC公开了一个可用于指定语言版本的RazorOptions,为什么不尊重它呢?以上就是C#学习教程:在ASP.NETMVCCore项目中View内部使用C#7函数分享的全部内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处: