我在 Visual Studio 2017 中有一个 ASP.NET MVC 5 项目,在成功添加 C# 7 支持(到目前为止对我有用)之后,我尝试在我的 Razor View 中使用元组,但我收到了一条令人惊讶的错误消息:
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.运行时
。安装有助于让 Visual Studio 平静下来,但在运行时不会产生任何影响。
最佳答案
Of course I have installed System.ValueTuple as a nuget package
我怀疑这就是问题所在。我的猜测是,即使您针对 .NET 4.5.2,您也在 .NET 4.7 系统上运行,其中包括 System.ValueTuple
在 mscorlib 中。
我建议您删除对 System.ValueTuple
包的包依赖,并将您的目标框架更新为 .NET 4.7(因为您似乎正在运行它)...如果更改不会破坏其他东西,当然...
关于c# - ValueTuple 在带有 MVC 5 的 Razor View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335228/