我刚刚在Windows 8中安装了VS 11。当我得到用VS 2010构建的解决方案的最新版本,然后构建它时,我得到了这个错误(在VS 11中):
预定义类型'System.Tuple‘是在全局别名中的多个程序集中定义的;使用'c:\Program (x86)\Reference System.Tuple中的定义
我还没能通过谷歌找到答案。我不知道“全球别名”是什么。这些词太笼统了,无法通过谷歌搜索找到。
VS 11自动地做了一些更改,所以我取消了这些,重新编译,并得到了相同的错误。
我不知道该怎么办。有人知道如何解决这个错误吗?全球化名是什么?
编辑-这些是当前存在于项目中的引用
我试着删除未被使用的引用,但仍然得到了错误。

编辑2-答案
这个System.Tuple,在Raven程序集中,与.NET 4.0 System.Tuple冲突。谢谢克里斯托弗·柯伦斯在他的回答中解释了这一点。

发布于 2012-08-12 17:19:44
看起来Raven.Abstractions是一个.NET 3.5程序集,而不是.NET 4.0引用。如果您查看源代码这里是RavenDB,您会注意到它定义了一个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。
发布于 2012-07-31 13:36:29
只是解决了同样的问题。在我的一个项目(顺便说一句,它是FSharp.Core项目)中,我似乎已经有了硬编码版本的C#。将<Reference Include="FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />更改为<Reference Include="FSharp.Core" />后,警告消失。
发布于 2014-01-08 23:31:20
遇到同样的问题。这一次,我的项目是在.NET 4.5和引用.NET 3.5DLL。它导致生成失败,因为system.tuple有多个程序集。为了解决这个问题,我的同事建议将引用项目的别名(属性下)从“全局”更改为其他内容。它修正了生成警告/错误。
https://stackoverflow.com/questions/9543278
复制相似问题