元组在 VS 2017 中不起作用
Tuples not working in VS 2017
我在 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
的引用
None有效果
编辑: 不是 的副本,因为那里的解决方案(NuGet 包)没有解决问题。
我想我已经找到问题的根源了。
项目导入:
<Import Project="$(MSBuildToolsPath)\Workflow.Targets" />
这是生成输出中错误的来源。如果我用上面的代码将它导入到一个简单的控制台项目中,我可以重现错误。
我在 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
的引用
None有效果
编辑: 不是
我想我已经找到问题的根源了。
项目导入:
<Import Project="$(MSBuildToolsPath)\Workflow.Targets" />
这是生成输出中错误的来源。如果我用上面的代码将它导入到一个简单的控制台项目中,我可以重现错误。