最近,我在一个项目上提取了最新的代码,该项目对于某些同事来说可以很好地编译,但是对我而言却不是。代码中有一行简单的代码导致其无法生成:
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 ,并在“属性”>“生成”>“高级”中将其设置为 C#最新主版本(默认)
我不确定要构建什么要缺少什么。将我的环境与同事进行比较似乎是完全相同的-有什么想法吗?谢谢。
编辑:无法将其更改为==
,因为它是==
的替代-但这只是避免了这种情况,并且无法解决。
答案 0 :(得分:1)
在我的 .csproj 文件中,我有几个恶意的如果存在进口,这些进口过去出于任何原因都放置在那里。由于它们在我的同事环境中不存在,因此对他们来说不是问题。
<Import Project="..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\..\..\Dependencies\Packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\Dependencies\Packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\..\..\Dependencies\Packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\..\Dependencies\Packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
我认为由于后面的导入是较低的版本,并且确实存在,所以它们取代了以前的导入。
也就是说,我只是删除了最后两个导入,并且一切正常-谢谢大家的投入!