/ langversion的选项'7'无效;必须为ISO-1,ISO-2,默认值或1到6之间的整数

时间:2018-10-17 16:43:19

标签: c# visual-studio

我在Visual Studio中有一个无法编译的项目。 它会引发很多类似这样的错误:

  

错误CS1001:预期的标识符
  ;预期
      错误CS1022:类型或名称空间定义,或预期的文件结尾
      错误CS0116:名称空间不能直接包含字段或方法之类的成员

它抱怨现代的C#结构,例如Tuples。 每当我导航到这些文件时,Visual Studio都不会标记任何错误,也不会标记它们一秒钟,然后消失。

如果我转到项目属性(在Build-> Advanced ...中),则语言版本设置为“ C#最新主要版本(默认)”。 如果我将其设置为7.0或更高版本以尝试获得对这些构造的支持,那么在编译项目时,它将引发以下错误:

  

/ langversion的选项'7'无效;必须为ISO-1,ISO-2,默认值或1到6之间的整数。

因此,似乎不接受高于6的C#版本。

值得注意的是,该项目在存储库中共享,并且团队的其他成员都没有在编译该项目时遇到问题。 因此,所有这些都表明我的机器或Visual Studio的本地设置存在问题,而不是项目的配置。

要考虑的一些事情:

  • 在项目中正确引用了软件包“ System.ValueTuple”,并将其设置为版本4.3.1。
  • 软件包“ Microsoft.Net.Compilers”的版本为2.2.0。
  • 该项目的目标框架设置为.NET Framework 4.6.2。
  • 我的Visual Studio为最新版本15.8.7。

这些是我尝试过的一些事情:

  • 将软件包“ System.ValueTuple”和“ Microsoft.Net.Compilers”升级到最新版本。
  • 我已经建立,重建和清理了项目。
  • 我尝试将解决方案中的所有其他项目升级到相同版本的Microsoft.Net.Compilers。
  • 我修复了Visual Studio的安装。

但似乎没有任何作用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

  1. 让您的同事创建一个琐碎的项目,他们可以 编译(使用valuetuple的玩具项目)。准确写下他们的做法。 确认该项目适用于他们,但不适用于您。
  2. 完全卸载Visual Studio(不,不能修复)。
  3. 安装Visual Studio。在Visual Studio和Windows中检查更新。应用所有这些。
  4. 重新启动计算机。
  5. 尝试运行该项目。如果成功,则说明您已经取得了进展(或已经完成)。如果失败,则至少具有最少的再现性。
  6. 按照您的同事在步骤1中执行的相同步骤创建一个全新的项目。(此步骤很关键。创建新项目的行为通常可以解决此类问题,或者为您提供一个新的可以正常工作的项目与破损的东西有所区别)。
  7. 乱七八糟(安装nuget控制台工具,手动添加/删除随机软件包,通常随便戳一下)。

如果所有这些步骤均失败,请放弃。到您阅读我的答案时,您已经花了整整一天的时间来尝试解决这些问题。也许有人可以解决您的问题,但是您不知道那将需要另外1天还是30天。  确实,展平/重建需要1-2(*)个完整工作日的时间,但是可以保证正常工作(假设您的入职流程很稳定/一致)。如果另一种方法浪费了一周但仍然不一定成功,那么浪费1-2天是可以接受的。

(*)在这里,我假设您的入职流程是有效的。如果混乱,请记录该过程,以便您对其进行修复。

答案 1 :(得分:0)

  1. 将 .csproj 重命名为 .txt 并使用文本编辑器打开
  2. 查找7​​
  3. 将值更改为 6 并使用 .csproj 保存文件
  4. 在 VS 中重新加载项目

答案 2 :(得分:0)

我花了几个小时才弄明白。安装 Nuget 包或修改 web.config 的组合不起作用。您需要更改 .csproj 文件中的编译器版本。

确保您的 .csproj 文件像这样引用 2.0 编译器:

  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />