dbr*_*lon 13 c# asp.net-mvc razor
我已经更新了ASP.NET Mvc 5 Web应用程序,以通过Visual Studio 2019使用新的c#8.0功能,并且一切正常,直到我尝试在Razor视图中使用这些新功能为止。
例如,如果我尝试使用新的switch表达式:
@{
ViewBag.Title = "About";
var foo = 1;
var bar = foo switch
{
1 => "one",
2 => "two",
_ => string.Empty
};
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<p>Use this area to provide additional information.</p>
Run Code Online (Sandbox Code Playgroud)
直到我尝试访问该页面时,编译器才会抱怨,这给了我编译错误。
我怀疑Microsoft.CodeDom.Providers.DotNetCompilerPlatform必须更新,但似乎没有可用的更新。
有什么方法可以在Razor视图中使用c#8.0语言功能?
.net框架支持C#7.3,因此无法使Razor View正常工作
.net core 3支持C#8,我能够使您的示例与.net Core 3 MVC应用程序一起使用。
您可以在这里查看:https : //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/configure-language-version
希望以上内容对您有所帮助:)
好的,有一些事情需要先澄清。
根据这个答案, C# 语言版本与框架绑定,并且 C# 8.0 完全适用于支持 .Net Standard 2.1 的所有语言。.NET Framework 4.7.2 及以下版本不支持 .NET Standard 2.1,将来也不会如此。
同时,如果您在任何 .csproj 项目文件中指定 LangVersion,则有一种方法可以使用 C# 8.0:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net48</TargetFrameworks>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
这将启用 C# 8.0,并且您可以使用一些非绑定框架功能。检查链接答案以了解是哪一个。
最后回答我自己的问题,目前,不,无法在 Razor 视图中使用任何 C# 8.0 功能。运行时编译似乎是使用一个名为的包完成的,Microsoft.CodeDom.Providers.DotNetCompilerPlatform因此唯一的方法是更新该包以允许使用某些新功能。
我会在获得更多信息后立即更新该答案。
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |