首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/langversion的无效选项'7‘;必须是ISO-1、ISO-2、默认值或范围1至6中的整数

/langversion的无效选项'7‘;必须是ISO-1、ISO-2、默认值或范围1至6中的整数
EN

Stack Overflow用户
提问于 2018-10-17 16:43:18
回答 3查看 3.5K关注 0票数 1

我在Visual中有一个不会编译的项目。它正在抛出许多类似于这些错误的错误:

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

它在抱怨现代的C#结构,比如元组。每当我导航到这些文件时,Visual都不会标记任何错误,也不会在它们消失之前标记它们一秒钟。

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

无效选项'7‘的/langversion;必须是ISO-1,ISO-2,默认或整数范围1至6。

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

值得注意的是,这个项目是在存储库中共享的,并且团队的其他成员都没有编译它的问题。因此,所有这些都指向我的计算机或Visual的本地设置出现了问题,而不是项目的配置。

有些事情需要考虑:

  • 包"System.ValueTuple“在项目中正确引用,并设置为4.3.1版本。
  • 包"Microsoft.Net.Compilers“位于2.2.0版。
  • 该项目的目标框架设置为.NET Framework4.6.2。
  • 我的Visual的最新版本是15.8.7。

以下是我尝试过的一些事情:

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

然而,似乎什么都起不到作用。

任何帮助都是非常感谢的!

EN

回答 3

Stack Overflow用户

发布于 2018-10-18 14:02:07

  1. 让你的同事创建一个他们可以编译的琐碎项目(一个使用价值元组的玩具项目)。写下他们是如何做到的。验证此项目对他们有效,但对您不起作用。
  2. 完全卸载Visual (不,修复不会切断它)。
  3. 安装Visual。检查Visual和Windows中的更新。把它们全部应用。
  4. 重新启动计算机。
  5. 试着运行这个项目。如果它成功了,您已经取得了进展(或者已经完成了)。如果它失败了,你至少有最少的复制。
  6. 创建一个全新的项目,遵循您的同事在步骤1期间遵循的相同步骤(此步骤是关键步骤)。创建一个新项目的行为通常会解决这类问题,或者给您一个新的工作项目,这个项目可以与一个失败的项目相区别)。
  7. 乱七八糟(安装nuget控制台工具,手动添加/删除随机包,并通常在周围穿插)。

如果所有这些步骤都失败了,那就放弃。当你读到我的答案时,你已经花了整整一天的时间来解决这些问题。有人可能会设法解决你的问题,但你不知道这还需要1天还是30天。诚然,扁平/重建的成本是1-2(*)个工作日,但它几乎可以保证工作(假设您的入职过程是健壮的/一致的)。浪费1-2天是可以接受的,如果另一种选择是浪费一周,但仍然不一定成功。

(*)在这里,我假设你的入职程序是有效的。如果是乱七八糟的,请记录这个过程,以便您可以修复它。

票数 1
EN

Stack Overflow用户

发布于 2021-01-26 13:11:19

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

Stack Overflow用户

发布于 2021-07-21 02:10:52

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

确保您的.csproj文件引用了2.0编译器,如下所示:

代码语言:javascript
复制
  <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')" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52859801

复制
相关文章

相似问题

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