我在Visual中有一个不会编译的项目。它正在抛出许多类似于这些错误的错误:
错误CS1001:预期标识符 ;预期 错误CS1022:类型或命名空间定义,或预期的文件结束 错误CS0116:命名空间不能直接包含成员,如字段或方法
它在抱怨现代的C#结构,比如元组。每当我导航到这些文件时,Visual都不会标记任何错误,也不会在它们消失之前标记它们一秒钟。
如果我转到项目属性(在Build -> Advanced.中),语言版本被设置为"C#最新主要版本(默认)“。如果我将其设置为7.0或更高版本以获得对这些构造的支持,则在编译项目时会引发以下错误:
无效选项'7‘的/langversion;必须是ISO-1,ISO-2,默认或整数范围1至6。
因此,它似乎不接受高于6的C#版本。
值得注意的是,这个项目是在存储库中共享的,并且团队的其他成员都没有编译它的问题。因此,所有这些都指向我的计算机或Visual的本地设置出现了问题,而不是项目的配置。
有些事情需要考虑:
以下是我尝试过的一些事情:
然而,似乎什么都起不到作用。
任何帮助都是非常感谢的!
发布于 2018-10-18 14:02:07
如果所有这些步骤都失败了,那就放弃。当你读到我的答案时,你已经花了整整一天的时间来解决这些问题。有人可能会设法解决你的问题,但你不知道这还需要1天还是30天。诚然,扁平/重建的成本是1-2(*)个工作日,但它几乎可以保证工作(假设您的入职过程是健壮的/一致的)。浪费1-2天是可以接受的,如果另一种选择是浪费一周,但仍然不一定成功。
(*)在这里,我假设你的入职程序是有效的。如果是乱七八糟的,请记录这个过程,以便您可以修复它。
发布于 2021-01-26 13:11:19
发布于 2021-07-21 02:10:52
我花了几个小时才弄明白这件事。安装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')" />https://stackoverflow.com/questions/52859801
复制相似问题