ValueTuple 在带有 MVC 5 的 Razor 视图中不起作用

ValueTuple not working in Razor views with MVC 5

我在 Visual Studio 2017 年有一个 ASP.NET MVC 5 项目,在成功添加 C# 7 支持后(到目前为止对我有用),我尝试在我的 Razor 视图中使用元组,但是我收到一条令人惊讶的错误消息:

CS0433: The type 'ValueTuple<T1, T2>' exists in both 'System.ValueTuple, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

当然,我已经将 System.ValueTuple 安装为 nuget 包,但是这个错误表明 mscorlib 本身还有另一个实现 - 这有什么意义?毕竟,如果我从我的项目中删除 nuget 包,ValueTuple 就再也找不到了。我的目标是 .NET Framework 4.5.2 并使用来自 ASP.NET.

的所有包的最新版本

这个问题似乎与新的 C# 7 语法无关,它只是由于尝试使用 ValueTuple 类型引起的:

ValueTuple<int, int> tuple;

我对 Visual Studio 的 IntelliSense 给我的错误更加困惑,它说 ValueTuple 没有被引用,要使用它我必须添加对 System.Runtime。安装有助于平静 Visual Studio 但在运行时没有任何区别。

Of course I have installed System.ValueTuple as a nuget package

我怀疑这就是问题所在。我的猜测是,即使您目标.NET 4.5.2,您在.NET 4.7 系统上运行 ,其中包括 mscorlib 中的 System.ValueTuple

我建议您删除对 System.ValueTuple 包的包依赖,并将您的目标框架更新为 .NET 4.7(因为您似乎已经 运行 了)...如果当然,改变不会破坏其他东西...