我在Visual Studio 2017中有一个C#库,我正在尝试在接口中使用元组:
IEnumerable<(Guid Id, string name)> GetFoo ();
我已经通过NuGet添加了对System.ValueTuple
的引用。
Visual Studio和ReSharper都没有检测到此行存在问题,但是在构建时我会收到错误提示:
------ Build started ------
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
error : Type expected
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
error : Invalid token '(' in class, struct, or interface member
declaration
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
error : Identifier expected; 'string' is a keyword
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
error : ; expected
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Workflow.targets(121,5):
error : Method must have a return type
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
这表明它没有使用C# 7进行编译。
我正在针对.NET Framework 4.6.2进行目标设置。
我尝试过以下内容:
安装Visual Studio的最新更新
通过属性>生成>高级>语言版本,显式地使项目编译使用C# 7
添加对Microsoft.Net.Compilers的引用
但都没有任何效果。
编辑:不是C# 7 .NET / CLR / Visual Studio version requirements的重复,因为那里的解决方案(NuGet包)没有解决问题。