使用C#7.0功能时无法生成

时间:2018-06-19 15:55:23

标签: c# visual-studio-2017 roslyn c#-7.0

最近,我在一个项目上提取了最新的代码,该项目对于某些同事来说可以很好地编译,但是对我而言却不是。代码中有一行简单的代码导致其无法生成:

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#最新主版本(默认)

我不确定要构建什么要缺少什么。将我的环境与同事进行比较似乎是完全相同的-有什么想法吗?谢谢。

编辑:无法将其更改为==,因为它是==的替代-但这只​​是避免了这种情况,并且无法解决。

1 个答案:

答案 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')" />

我认为由于后面的导入是较低的版本,并且确实存在,所以它们取代了以前的导入。

也就是说,我只是删除了最后两个导入,并且一切正常-谢谢大家的投入!