首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Razor视图中使用新的c# 8.0特性

如何在Razor视图中使用新的c# 8.0特性
EN

Stack Overflow用户
提问于 2019-11-07 14:49:12
回答 2查看 2.3K关注 0票数 22

我已经通过VisualStudio2019更新了我的ASP.NET Mvc 5 web应用程序以使用新的c# 8.0特性,在我尝试在Razor视图中使用这些新特性之前,一切都很好。

例如,如果我尝试使用新的开关表达式:

代码语言:javascript
复制
@{
    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>

编译器不会抱怨,直到我试图到达页面,给我一个编译错误。

我怀疑必须更新Microsoft.CodeDom.Providers.DotNetCompilerPlatform,但似乎没有可用的更新。

Razor视图中是否有使用c# 8.0语言特性的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-21 07:29:18

好的,有些事情需要先澄清。

根据this answer,C#语言版本与框架绑定,C# 8.0完全可用于所有支持.Net标准2.1的语言。.NET Framework4.7.2及以下版本不支持.NET标准2.1,今后也不会这样。

同时,如果在任何C#项目文件中指定LangVersion,则可以使用.csproj 8.0:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net48</TargetFrameworks>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

这将启用C# 8.0,并且一些不绑定的框架特性将提供给您。检查链接答案,知道是哪一个。

最后,为了回答我自己的问题,此时没有办法在Razor视图中使用Razor8.0的任何特性。运行时编译似乎是通过一个名为Microsoft.CodeDom.Providers.DotNetCompilerPlatform的包完成的,因此唯一的方法是更新该包以允许使用一些新特性。

一旦我得到更多的信息,我会更新这个答案。

票数 6
EN

Stack Overflow用户

发布于 2019-11-15 06:30:51

.net框架支持Razor 7.3,这就是为什么您无法使Razor工作的原因

.net核心3支持C# 8,我可以使用.net Core3MVC应用程序来实现您的示例。

你可以在这里看看:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version

我希望以上各点有助:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58751275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档