VS Code CSC:错误 CS1617:/langversion 的选项“7.3”无效。

68

我下载了VS 2017 15.7、.NET Core 2.1.2和Blazor来尝试一下。但是在VS 2017中无法正常工作,所以我想尝试使用dotnet cli和VS Code。但是我遇到了以下错误:

CSC : error CS1617: Invalid option '7.3' for /langversion.

在VS中,它会运行应用程序并显示“Loading...”,然后什么也没有发生。不确定这两个问题是否相关

dotnet --info返回以下内容:

.NET Command Line Tools (2.1.300-preview1-008174)

Product Information:
 Version:            2.1.300-preview1-008174
Commit SHA-1 hash:  b8df89a54f

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17666
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.300-preview1-008174\

Microsoft .NET Core Shared Framework Host

  Version  : 2.1.0-preview1-26216-03
  Build    : f2c3216183d20416568a4bbf5bb7d153e826f153

当你只运行“csc”时,它报告什么版本号?听起来VS2017安装的某些方面可能已经损坏了。此外,当你说你已经安装了“.NET Core 2.1.2”时,你具体指的是什么?如果你能展示dotnet --info的结果,那将非常有帮助。 - Jon Skeet
在Build大会上提到的大多数内容都是预览版,尚未正式发布。目前VS2017的预览版本是15.8。请注意,这还不稳定,不要完全依赖于它来完成日常工作。 - Hans Passant
@HansPassant:谢谢 :) 我明白了,只是很兴奋想试试其中的一些东西。 - Spydernaz
@DaisyShipton:已编辑以反映dotnet --info,但是csc会出现以下错误:'csc' 不是内部或外部命令。 - Spydernaz
听起来你的.NET Core 2.1 SDK预览版本有点旧了。我建议你从https://www.microsoft.com/net/download/dotnet-core/sdk-2.1.300-rc1安装rc1版本。 - Jon Skeet
2
注意:对于遇到此错误消息的其他人,请确保您已将目标框架更新为4.6+,并更新编译器包,例如Microsoft.CodeDom.Providers.DotNetCompilerPlatform,以支持C# 7.x中的语言特性。 - KyleMit
15个回答

107

我刚遇到这个问题,进行了一次清理和重建,问题就解决了。


我的源代码中有一些东西绕过了git ignore,这在进行干净的构建时对我很有帮助。进行清理和重建操作。最近我的项目升级从2017到2019版本,看起来我的测试项目类型可能是两个问题之一,而这个清理和重建操作解决了它。 - Sql Surfer
每次我遇到这个问题,我都会面临一个问题:“解决方案是什么来着?”然后它就变得“如此简单”。感谢您的反馈。(使用VS2019 / ASP.NET解决方案) - Marcus.D
2
它修复了问题,但是如果我立即之后再次重新构建,它会再次出现。只有在清理后才能成功构建/重新构建。有什么想法是什么原因导致这种行为? - dev'd

29

到了2020年10月,我使用的是VS 2019.. 这是我的错误,导致我通过google找到了这篇文章:

CS1617无效选项'7.3'用于/langversion; 必须为ISO-1、ISO-2、Default、Latest或1到7.1范围内的有效版本

FWIW - 我只是在处理一个老派的.NET Framework / ASP.NET / Web API2项目,不想做任何与标准或Core相关的酷炫事情...

我很困惑,因为:

  1. 它在我工作的工作站上运行正常
  2. 它在我的Azure CI管道中运行正常
  3. 那么..为什么在我家里的Win 10专业工作站上不行呢?

解决方案

  • 我启动了Visual Studio Installer > 2019 > More > Modify screen
  • 切换到Individual Components选项卡,向下滚动到Code Tools
  • 发现需要选中这个小复选框NuGet targets and build tasks enter image description here 这是我能够立即辨别出来的两个工作站之间不同的唯一事情。我想选中复选框让它起了作用,而不仅仅是我被迫在还原nugets后关闭和重新启动Visual Studio所造成的..但你永远不知道。

1
我的同事在他公司发行的工作站上尝试构建解决方案时,缺少了一个.NET核心运行时(尽管这不是一个.NET核心应用程序)。我导出了我的Visual Studio配置(使用Visual Studio Installer中的“更多”按钮),然后我们比较了配置,最终找出了为什么它对我有效而对他无效的原因。 - bkwdesign
3
与上述描述完全相同的问题。 这个方法对我有效。 - Dave
3
哈哈,我刚组建了一台新电脑并通过谷歌找到了自己的答案!这次我需要一些.NET Framework的目标包。 - bkwdesign
这也解决了我的问题。很棒的发现。 - Darren S
1
给这个人颁发一枚奖章。 - AtLeastTheresToast
在VS2022上对我很有效。做得很棒。 - DasElias

27

在VS 2019中,我进入项目文件并把目标框架从4.6.2更改为4.7.2后,项目成功构建。然后将其还原回4.6.2,仍然可以成功构建。


3
我猜你的意思是你回退到了4.7.2版本? - Ruben9922

16

对于我来说,清理并重新构建并没有起作用,直到我关闭了Visual Studio并删除了.vs文件夹,然后重新打开、清理和重新构建。


如果您在使用一些旧框架时遇到问题,我建议尝试这个解决方案。这个解决方案对我也起作用了,我正在处理一个仍在使用.NET Framework 4.5.2的遗留项目。(别问我为什么....)我正在使用Visual Studio 2022,之前已经构建过该解决方案,但在几次更新(以及几个月之间)后,它就无法再次构建了。 - Martin Trampus
我正在处理一个遗留项目,尝试了清理和重新构建后,删除了.vs文件夹,这对我起到了作用。 - undefined

8

我遇到了这个问题,因为该应用程序以前可以使用,但最近从存储库被拉到一台新计算机上。第一个问题是找不到Nuget包,当我们解决了那个错误之后,出现了这个问题。解决方案如下:

  1. 关闭Visual Studio
  2. 打开解决方案
  3. 删除Microsoft.Net.Compilers(因为它已过时)
  4. 更新/安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers.Toolset到它们的最新版本 Nuget installs for Microsoft compiler packages

5. 清除并重新构建解决方案

我的直觉是这两个软件包的版本不匹配导致了语言选项的问题,但我不知道这是怎么出现的,因为在项目最后一次检查中它是正常工作的。


我不得不保持未安装工具包,以防止出现此问题:https://dev59.com/ElIH5IYBdhLWcg3wh_On - kevinpo

6
你应该使用预览版本的VS来尝试Blazor,它的版本号为15.8.x。 vs installer 并安装.NET Core 2.1 RC。2.1.2版本不适用。

这个Blazor链接似乎表明最新的2.1和15.7就足够了? - Spydernaz
好的。15.7.x是直到几天前的预览版。这篇博客文章谈论了15.7预览版,但实际上并不存在。因此这很令人困惑。我建议测试预览版15.8,它对我来说可以工作。 - Flores
此外,请确保您的 .NET Framework 版本为 2.1.300-Preview2-8533 或更高版本(即 RC 版本),2.1.200 将无法正常工作。 - Flores
1
Blazor在我的15.7.0版本中运行良好,不需要15.8版本。但是您确实需要.NET Core 2.1预览版。OP编辑后的问题显示已经安装了它,尽管是稍早的预览版。 - Jon Skeet
@Flores 和 @DaisyShipton,感谢你们的帮助。预览不够用。适用于版本:2.1.0-rc1 提交:eb9bc92051 - Spydernaz
@Spydernaz:很高兴它能正常工作 - 那仍然是一个预览版(而不是完整的GA发布),只是比你之前拥有的版本更新一些。 - Jon Skeet

3

在我的情况下,问题是 TypeScript 版本在项目属性的 TypeScript 构建选项卡中设置为 "2.5(不可用)"。我将其更改为 "使用最新版本" 来解决问题。

为什么会设置为不可用版本?因为源文件是从一个包含 TS 版本 2.5 的另一台电脑上的 VisualStudio 归档检出的。当前计算机没有 2.5,只有 4.1。


2

在我的情况下,我使用新版本的Visual Studio打开了解决方案,然后尝试在旧版本中运行它。

  1. Open csproj with notepad

  2. Modify LangVersion element

    From

    <LangVersion>7.3</LangVersion>
    

    To

    <LangVersion>6</LangVersion>
    

根据您的情况选择正确的值


2
对我来说,删除整行也起作用了。在我的情况下,似乎是由于在较新版本的Visual Studio中为该特定项目创建了一个新的项目配置,然后尝试在旧版本中重新构建它所导致的。 - Ruben9922

2

我在VS 2019中遇到了同样的问题。除了这个错误之外,我还有另外两个项目出现了以下错误:

cs0006:找不到C#元数据文件

解决方法是关闭VS,从这些项目中删除obj文件夹,然后重新打开解决方案并编译。


1

这些对我都不起作用。我的代码编译没有问题,但在我尝试发布它时会出现上述错误。为了解决它,我发现需要编辑文件 Directory.Build.Props

<Project>
 <PropertyGroup>
   <LangVersion>Default</LangVersion>
 </PropertyGroup>
</Project>

希望有人会发现这个小贴士很有用!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接