我刚刚建立了一个新的asp.net mvc 4项目,使用最新的.net框架(4.5)与Visual Studio 2012结合。在我添加了一些类,侧面项目等之后我突然注意到我是编译项目时收到5次相同的警告。警告说明:
ASPNETCOMPILER:警告CS1685:预定义类型 'System.Threading.Tasks.Task'在多个程序集中定义 全球别名;使用'c:\ Program Files(x86)\ Reference中的定义 组件\微软\ Framework.NETFramework \ V4.5 \ mscorlib.dll中“
所以现在我想知道这种类型的程序集定义的是哪个程序集?我在解决方案中的所有项目都使用.net框架的4.5版本,所以4.5 \ mscorlib.dll应该是唯一的,或者我错过了什么?
我的解决方案包括4个项目(3个类库和1个mvc-4 web项目)。当我独立编译它们时,3类库不会显示任何警告。它只是抛出警告的Web项目,但是Web项目引用了类库项目。 Web项目的参考:
有没有人有建议在哪里看?
提前致谢
BHD
更新 似乎更多的人有这样的类似问题,在我的情况下答案是: 我们在这里使用了一些公司库,它们确实使用了旧版本的框架(3.5)并引发了警告。
答案 0 :(得分:7)
与文章C# Compiler Warning 1685类似。检查是否有任何引用的程序集本身引用了不同版本的mscorlib.dll。
抓住DotPeek或.NET Reflector,您应该能够检查引用的程序集引用的程序集版本。
答案 1 :(得分:1)
Visual Studio 输出可以为您提供有关哪些程序集正在触发此操作的详细信息。您将需要输出处于“详细”级别。转到(至少在 VS 2019 中):
工具 -> 选项 -> 项目和解决方案 -> 构建和运行
并为“MSBuild project build output verbosity”选择“Detailed”。
然后获取构建输出并查找诸如“...之间存在冲突”之类的内容。这应该列出引用程序集以及冲突的程序集版本。这些信息应该足以决定行动方案。