System.Tuple在多个程序集中定义

Bob*_*orn 6 .net compiler-errors .net-4.0 .net-4.5 visual-studio-2012

我刚刚在Windows 8中安装了VS 11.当我获得使用VS 2010构建的最新解决方案,然后构建它,我收到此错误(在VS 11中):

预定义类型"System.Tuple"在全局别名中的多个程序集中定义; 使用'c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll'中的定义

我无法通过Google找到答案.我不知道"全球别名"是什么.这些单词过于通用,无法通过Google搜索找到.

VS 11自动做了一些更改,所以我解除了那些,重新编译,并得到了同样的错误.

我不知道该怎么做.任何人都知道如何解决此错误?什么是全球化的别名?

编辑 - 这些是项目中当前存在的引用

我尝试删除未使用的引用但仍然出现错误.

在此输入图像描述

编辑2 - 答案

这System.Tuple,乌鸦组件内,冲突与.NET 4.0 System.Tuple.感谢Christopher Currens在他的回答中解释这一点.

在此输入图像描述

Chr*_*ens 5

看起来像Raven.Abstractions是.NET 3.5程序集,而不是.NET 4.0引用.如果你看看RavenDB Here的源代码,你会注意到它定义了一个Tuple<T, U>类,如果它是为.NET 3.5构建的.

您必须在某个时候将项目从.NET 3.5更新到.NET 4.0,因为我还注意到您有对System.Core的引用.在.NET 4中,System.Core默认是引用,因此项目中的引用是多余的.

我的建议是,您找到已在项目中引用的所有程序集,并将其替换为.NET 4版本(如果可用).我知道.NET具有额外的兼容性,因为它允许同时在一个进程中加载​​两个版本的运行时,但我无法想象它在某些级别上不会影响性能,即使只是一点点..NET 4运行时在很多方面都是优越的,特别是大对象堆.我想我有点咆哮.只需更新4.0到哪些程序集,或将项目版本更改为3.5.