【问题标题】:Invalid option '7.3' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6/langversion 的选项“7.3”无效;必须是 ISO-1、ISO-2、默认值或 1 到 6 范围内的整数
【发布时间】:2020-11-01 15:38:49
【问题描述】:

我正在使用 Visual Studio 17(版本 15.8.5),我的项目针对 .NET Framework 4.8,我尝试设置要使用的 C# 版本(通过“属性”窗口中的“构建”选项卡)C# 7.3(这是最高可从下拉列表中选择的版本)。但是,构建项目会报告失败,例如问题标题中的内容。我什至尝试过7.0C# latest minor version,所有这些都报告失败。

貌似环境支持最高版本6(C# 6.0)?

我尝试安装了Microsoft.Net.Compilers v3.6.0Microsoft.Net.Compilers.Toolset v3.6.0,但没有任何改变。

我想像下面的简单代码一样使用模式匹配功能:

object o ...
if(o is int c){
    //do something with c (cast to int) ...
}

更新

奇怪的是,如果我创建一个全新的 ASP.NET MVC 项目 ,它只是用 C# 7.3 集编译好。所以看起来我正在从事的特定项目有问题。为了更好地诊断,我想通过此链接在此处分享该项目https://sites.google.com/site/ngaodaantoi/files/WebApiAuth.zip?attredirects=0&d=1

建议您使用 VS 2017 来帮助重现该问题。

【问题讨论】:

  • 为了解决这个问题,我会通过将#error version 放在源代码中来确认正在使用哪个版本的编译器(这将输出编译器的版本)并使用/langversion:? 列出可用版本.
  • @JulienCouvreur 我已经尝试了你的建议,它显示Compiler version: '2.9.0.63208 (958f2354)' langversion 完全显示了我通过项目的“属性”窗口设置的内容。无论如何感谢您的建议,但我不知道该信息。
  • 您是否安装了最新版本的 Microsoft.Net.Compilers Nuget 包?
  • @DMadden51 是的,我确实有这个(我的问题中已经提到过),也安装了最新版本的Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • @Hopeless 我很困惑:-/ Roslyn 编译器版本 2.9.x 支持语言版本 7.3(记录在 here)。可能值得询问 ASP.NET 团队。可能涉及多个编译器:IDE、Build 和 ASP.NET。查看构建日志会有所帮助(使用/binarylog 选项,然后使用“MSBuild 结构化日志查看器”)。如果您的项目很小/简单/独立且不保密,您可以与我分享以尝试复制(电子邮件 jcouv@microsoft.com)。

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


【解决方案1】:

我通过以下步骤解决了这个问题没有升级任何 NuGet 包

  1. 关闭所有打开的 Visual Studio 实例

  2. 打开“Visual Studio 安装程序”

  3. 在您使用的 Visual Studio 版本上单击“修改”

    我。就我而言,我使用的是 VS2019 Professional 16.11.0

  4. 在对话框顶部,选择“Individual Components”

  5. 在搜索栏中,输入“Roslyn”

  6. 检查这两个选项, should look like this

    我。如果图像出现故障,选项是“.NET Compiler Platform SDK”和“C# and Visual Basic Roslyn Compilers”

    二。在我的情况下,第二个已经被检查了

  7. 按对话框右下角的“修改”确认更改

一旦我重新打开我的项目,我就能够成功编译。

【讨论】:

  • 没有帮助我。
  • 这解决了一个持续了5个月的问题。谢谢一百万
  • 为我工作。赞成!
【解决方案2】:

尝试升级以下 NuGet 包(以安装的为准)以解决问题:

-Microsoft.CodeDom.Providers.DotNetCompilerPlatform

-Microsoft.Net.Compilers

【讨论】:

  • 这在本地对我有用,但是当我提交与 GetPathsOfAllDirectoriesAbove() 相关的更改时,它在构建服务器上失败了。我的构建服务器最初没有报告任何问题,所以在进入那个兔子洞之前,我找到了这个解决方案:stackoverflow.com/a/64542445/1158234。我只是更新了 VS 2019,问题就在本地自行解决了。无需更改。
【解决方案3】:

更新 Microsoft.Net.Compilers nuget 包。 它对我有用..干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多