C# 预定义类型';System.Threading.Tasks.Task';在全局别名的多个程序集中定义

C# 预定义类型';System.Threading.Tasks.Task';在全局别名的多个程序集中定义,c#,asp.net-mvc,asp.net-mvc-4,asp.net-4.5,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net 4.5,我刚刚建立了一个新的asp.net mvc 4项目,使用最新的.net framework(4.5)与Visual studio 2012相结合。在我添加了一些类、辅助项目等之后,我突然注意到在编译项目时收到了5次相同的警告。警告指出: ASPNETCOMPILER:警告CS1685:预定义类型 在中的多个程序集中定义了“System.Threading.Tasks.Task” 全局别名;使用“c:\Program Files(x86)\Reference”中的定义 程序集\Microsoft\

我刚刚建立了一个新的asp.net mvc 4项目,使用最新的.net framework(4.5)与Visual studio 2012相结合。在我添加了一些类、辅助项目等之后,我突然注意到在编译项目时收到了5次相同的警告。警告指出:

ASPNETCOMPILER:警告CS1685:预定义类型 在中的多个程序集中定义了“System.Threading.Tasks.Task” 全局别名;使用“c:\Program Files(x86)\Reference”中的定义 程序集\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll'

现在我想知道这种类型是在哪些程序集中定义的?我在解决方案中的所有项目都使用.net framework的4.5版本,因此4.5\mscorlib.dll应该是唯一的版本,还是我遗漏了什么

我的解决方案包括4个项目(3个类库和1个mvc-4Web项目)。当我独立编译3个类库时,它们不会显示任何警告。只有web项目抛出警告,但是web项目引用类库项目。web项目的参考资料:

  • Antlr3.Runtime
  • Microsoft.CSharp
  • Microsoft.Web.Infrastructure
  • 系统
  • 系统数据
  • System.Web.dynamicATA
  • System.Web.Entity
  • System.Web.ApplicationServices
  • System.ComponentModel.DataAnnotations
  • 系统核心
  • System.Data.DataSetExtensions
  • System.Web.Optimization
  • System.Xml.Linq
  • 系统.Web
  • System.Web.Extensions
  • System.Web.Abstractions
  • System.Web.Routing
  • Xml
  • 系统配置
  • System.Web.Services
  • 系统企业服务
  • Json
  • System.Net.Http
  • System.Net.Http.xml格式
  • System.Net.Http.WebRequest
  • System.Web.Helpers
  • System.Web.Http
  • System.Web.Http.WebHost
  • System.Web.Mvc
  • System.Web.Razor
  • System.Web.Web页面
  • System.Web.WebPages.Deploymen
  • System.Web.WebPages.Razor
  • 网脂
有人建议去哪里找吗

提前谢谢

BHD

更新 似乎更多的人有类似的问题,在我的例子中,答案是: 我们在这里使用的是一些公司库,它们确实使用了较旧版本的框架(3.5),并引发了警告。

类似于本文。检查引用的程序集本身是否引用了不同版本的mscorlib.dll


获取或,您应该能够检查引用的程序集引用的程序集的版本。

Visual Studio输出可以为您提供触发此操作的程序集的详细信息。您需要输出为“详细”级别。转到(至少在2019年VS中):

工具->选项->项目和解决方案->构建和运行

并为“MSBuild项目生成输出详细信息”选择“详细信息”


然后抓取构建输出并查找类似“在…之间存在冲突”的内容。这将列出引用程序集以及冲突程序集的版本。这些信息应该足以决定行动方案。

发生这种情况的计算机是否安装了其他版本的.NET 4.5或.NET 4.0?您的消息没有指定其他程序集是什么。在给您提供CS1685警告的同一个项目中,尝试引入以下变量:
global::System.Threading.Tasks.Task test=null。它应该会给您另一个错误,如
error CS0433:类型“t”在“x”和“y”中都存在
x
y
是有问题的两个程序集。思维良好的Jeppe,我尝试过,但运气不佳。还是警告,没有错误,我同意。具体检查
Antlr3.Runtime
Newtonsoft.Json
webfleed
是否引用了其他版本的
mscorlib.dll
,例如某些.NET 4.0版本。也许看看项目文件中的版本号?这就是最终的问题所在。但由于这是一个新的/干净的项目,我想知道是哪个mvc依赖项导致了这一点。我刚刚安装了reflector,如何检查我的依赖项的依赖项?@BlackHawkDesign:如果您获得DotPeek,请将您的程序集放入程序集资源管理器。您将能够看到您的依赖项及其版本。双击每个依赖项以加载它并检查它的依赖项。谢谢Phil,我发现我的公司库确实在使用mscorlib.dll的旧版本。当我找到时间时,我会检查这是否会导致警告,但我很确定他们会。几个月后,我发现确实是我的公司库导致了警告,我最终更换了它们,警告消失了:)非常感谢@Jeppe:是的,在删除警告后,我收到了一个新的警告,这是由网页皱褶引起的,太烦人了!