【发布时间】:2018-11-28 15:46:50
【问题描述】:
最近我在一个项目中提取了最新代码,该代码对一些同事来说编译得很好,但对我来说却不是。代码中有一行简单的代码导致它无法构建:
if (x is null || y is null)
return false;
给了我所有这些编译错误:
) expected
Type Expected
; expected
Type expected
; expected
} expected
我觉得这是编译器的问题?我在 Visual Studio 2017 Enterprise 15.6.3、.Net 4.7.03056 上。该项目引用 Microsoft.Net.Compilers 2.4.0 并在 Properties > Build > Advanced 中设置为 C# latest major version (default)
我不确定我缺少什么来构建它。将我的环境与同事进行比较似乎是相同的——有什么想法吗?谢谢。
编辑:无法将其更改为 ==,因为它是 == 的覆盖 - 加上这只是避免了这种情况,并没有解决它。
【问题讨论】:
-
.csproj中的目标框架版本是什么? -
v4.5.2 -
请注意
is null是c#-7.0,而不是您在标签中写的c#-6.0...您使用的是msbuild还是Visual Studio(因为有标签)? -
@naspinski 在这里可以工作...您可以尝试卸载包编译器并重新安装它
-
或者尝试使用 msbuild 编译解决方案(从 Visual Studio 的命令提示符
msbuild yoursolution.sln并尝试查看它正在使用的编译器(您应该看到X:\solutionpath\packages\Microsoft.Net.Compilers.2.4.0\build..\tools\csc.exe)
标签: c# visual-studio-2017 roslyn c#-7.0