- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
B"H
我正在尝试使用 C# 7 的新元组功能,但遇到了一些问题。实际上,它们工作正常,我不确定是什么改变导致它们损坏。
我正在使用 ASP.Net 4
、MVC 5
,目标是 .net framework 4.6.1
因此,为了使用元组,我必须使用 Nuget 包 'System.ValueTuple'
。没有它,项目将无法编译。有一段时间效果很好。然后今天当我加载任何使用元组的页面时,我得到
Compiler Error Message: CS0433: The type 'ValueTuple' exists in both 'System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
项目编译正常,如果我删除 System.ValueTuple
则它不会编译。但是当我在网页中运行它时出现此错误。
我在 google 上的搜索表明 ValueTuple
已添加到 .net 4.7
,但我在项目中的任何地方都没有提到 4.7,而且我也没有针对 4.7 进行编译。我的 VS 2017 甚至没有那个选项。
谢谢
最佳答案
ASP.NET网页是在运行时编译的,这个编译忽略了VS使用的引用程序集。如果 .NET 4.7 在运行时可用,所有 .NET 4.7 的类型,包括它的 ValueTuple
定义,将与您可能从其他 DLL 获得的任何其他定义一起被选取。
如果您已经安装了 .NET 4.7,那么避免此问题的最简单方法是在您的开发环境中也使用 .NET 4.7,或者避免运行时编译。
对于前者,您需要安装 .NET 4.7 目标包。它应该是 Visual Studio 安装程序中的一个选项。当您这样做时,您可以避免 ValueTuple
NuGet 包,从而避免冲突。
对于后者,您可以在发布 Web 项目时打开预编译。当您执行此操作时,通常在运行时发生的所有编译都将在发布期间以受控方式发生,在这种情况下不会看到 .NET 4.7 的添加。
关于c# - 'ValueTuple<T1, T2 >' exists in both ' System.ValueTuple .. .' and ' mscorlib ...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46040113/
考虑以下类型: (int, int) → 管理。 struct MyStruct { public (int,int) Value; } → 不受管理! 问题: 非泛型结构 MyStruct ,它有一
我如何检查 ValueTuple 列表的类型是否为 List , 不考虑参数的类型。 可能是: new List() new List() new List() 我尝试过的 public stati
B"H 我正在尝试使用 C# 7 的新元组功能,但遇到了一些问题。实际上,它们工作正常,我不确定是什么改变导致它们损坏。 我正在使用 ASP.Net 4、MVC 5,目标是 .net framewor
命名 ValueTuple 元素时,是否应该大写? (string Name, int Index) rec; 或 (string name, int index) rec; 编辑: 似乎约定是 Pa
我正在尝试使用反射在运行时设置 ValueTuple 的字段,但遇到了问题。我怀疑我不了解 FieldInfo.SetValue 的工作原理。 var a = (5, 5); a.Item1 = 6;
是否可以编写一个 C# 方法来接受具有任意数量的相同类型的值元组并将它们转换为列表? 编辑 2/6/2019我接受了提供的答案作为正确答案。我还想提供一个使用不是接口(interface)的基类的解决
我将返回大型 List 对象作为我的 ValueTuple 中的参数之一。像这样的东西: (bool success, List data string error)> Get(string temp
我有一个用例,我需要检查某个值是否为 C# 7 ValueTuple,如果是,则循环遍历每个项目。我尝试检查 obj is ValueTuple 和 obj is (object, object) 但
我尝试使用 ValueTuple 结构并尝试实现一个不可变的复合键。键由值类型组成。 我试图通过一些单元测试来破坏以下实现,但到目前为止没有成功。我错过了什么吗? 此外,这只是出于好奇,我想了解 Va
当我检查我的缓存以查看我的 ValueTuple 是否在缓存中时,我使用下面的代码。在这种情况下,返回的值为空(也就是缓存中不存在)。当代码运行时,我在第一行收到 object not set to
我在 C# 中尝试 ValueTuple 类,我对属性命名有疑问,让我们看看: 如果实例化一个 ValueTuple 声明这样的对象:var tuple1 = (Name: "Name1", Age:
假设我有一个方法 foo,它返回一个 ValueTuple,其中一个成员是一次性的,例如 (IDisposable, int) . 确保调用方正确处理返回的一次性对象的最佳方法是什么? 我尝试了以下方
我想这可能是一本方便的字典: var myDict = new Dictionary(); 散列会是什么样子? 等效的键类型(结构)是什么样的? 最佳答案 是的,没关系。 ValueTuple fam
有一个方法接收一个ValueTuple,修改后返回。在这种情况下,我可以在方法参数中指定 ValueTuple 的字段名吗? private static void Operation() {
如何像这样创建超过八个值的 ValueTuple 列表: (int Id, string FirstName, string LastName, int Vek, int City, int Zip,
这可以在 C# 7.3(框架 4.8)中正确编译: (string, string) s = ("a", "b"); (object, string) o = s; 我知道这是以下内容的语法糖,它也可
这个问题已经有答案了: Why can't class fields be var? [duplicate] (4 个回答) 已关闭 4 年前。 我想初始化 ValueTuples 的静态只读数组,我
我刚刚将一个 DLL 文件包含到我的项目中,并且正在使用一种返回 List 的方法。 .我最近才意识到 ValueTuple C# 7 中的数据类型,并希望使用它而不是返回的普通元组。我知道我可以循环
这个问题已经有答案了: Why can't class fields be var? [duplicate] (4 个回答) 已关闭 4 年前。 我想初始化 ValueTuples 的静态只读数组,我
我刚刚将一个 DLL 文件包含到我的项目中,并且正在使用一种返回 List 的方法。 .我最近才意识到 ValueTuple C# 7 中的数据类型,并希望使用它而不是返回的普通元组。我知道我可以循环
我是一名优秀的程序员,十分优秀!