我在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的本地设置存在问题,而不是项目的配置。
要考虑的一些事情:
这些是我尝试过的一些事情:
但似乎没有任何作用。
感谢您的帮助!
答案 0 :(得分:0)
如果所有这些步骤均失败,请放弃。到您阅读我的答案时,您已经花了整整一天的时间来尝试解决这些问题。也许有人可以解决您的问题,但是您不知道那将需要另外1天还是30天。 确实,展平/重建需要1-2(*)个完整工作日的时间,但是可以保证正常工作(假设您的入职流程很稳定/一致)。如果另一种方法浪费了一周但仍然不一定成功,那么浪费1-2天是可以接受的。
(*)在这里,我假设您的入职流程是有效的。如果混乱,请记录该过程,以便您对其进行修复。
答案 1 :(得分:0)
答案 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')" />