C# 预定义类型';System.Threading.Tasks.Task';在全局别名的多个程序集中定义
我刚刚建立了一个新的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项目的参考资料: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\
- 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
- 网脂
获取或,您应该能够检查引用的程序集引用的程序集的版本。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:是的,在删除警告后,我收到了一个新的警告,这是由网页皱褶引起的,太烦人了!