【问题标题】:VS2017 - C#7 language features not working in MVC viewsVS2017 - C#7 语言功能在 MVC 视图中不起作用
【发布时间】:2018-03-17 05:27:32
【问题描述】:

在 .cshtml 视图中使用内插字符串会产生以下智能感知错误:Feature 'interpolated strings' is not used in C#5. Please use language version 6 or greater. 此功能和其他 C#7 语言功能在编译代码(.cs 文件)中工作。

如下所示,最新的主要版本 C#7。

根据this question 中的评论,“default”表示“最新的主要版本”

那么为什么会出错呢?另外,为什么它没有像我在许多在线示例中看到的那样将“最新主要版本”和“最新次要版本”显示为单独的列表选项?

更新:

我终于设法通过安装CodeDom providers package 使字符串插值在我的视图中工作(Microsoft.Net.Compilers 包与 Msbuild 相关。CodeDOM Providers 包与 ASP.NET 和其他在运行时编译的 api 相关因此为什么即使为 msbuild 选择了最新的语言版本,如果未安装 cshtml 文件也会显示错误)。这会自动将以下内容添加到我的 web.config:

 <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>

参考:C# 6.0 Features Not Working with Visual Studio 2015

我相信升级到 MVC6 也会解决这个问题。

【问题讨论】:

  • 你用的是哪个版本的VS2017?您的屏幕截图看起来让人想起 RC 版本;不是已发布的版本。
  • @DavidArno - 企业。
  • 对不起,我的意思是版本如 15.3.5。您可以通过Help -&gt; About Microsoft Visual Studio 找到
  • @DavidArno 很有趣 - 它说 15.0.0+26228.10。有可用的更新 - 我应该下载它还是需要重新安装。我以为我是最近才安装的 - 虽然可能我的记忆错了。
  • 自发布以来,通过大量更新应用了对 Visual Studio 的大量修复。因此,我建议下载该更新,因为它很可能会解决您的问题。

标签: c# asp.net-mvc visual-studio visual-studio-2017 c#-7.0


【解决方案1】:

我怀疑你的问题的关键是你说“在一个视图中”。假设这是在 ASP.Net 的上下文中,您应该查看您的 web.config,它可能会指定它自己的 LangVersion 设置(在您的情况下可能硬编码为 5)。

有关配置 ASP.Net 以使用较新版本的 C# 的更多详细信息,请参阅此Roslyn documentation issue

【讨论】:

  • 我的 web.config 中没有 LangVerson。根据链接页面中的建议,我尝试安装 Microsoft.Net.Compilers(即使在 VS2017 中我不应该这样做)。仍然没有LangVersion。仍然报错。
  • 你能分享你的 web.config 吗?应该是这样的:&lt;compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6/nowarn:1659;1699;1701"&gt;
  • 不,没有那样的东西。我可以在 .cs 文件中使用字符串插值,但不能在 .cshtml 文件中使用。
  • 通过安装 codedom 提供程序使其工作(Microsoft.Net.Compilers 与 Msbuild 相关。CodeDOM 提供程序与 ASP.NET 和其他在运行时编译的 api 相关)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2019-09-11
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多