. net 3.5解决方案在使用msbuild编译时出现此警告。

有时NDepend可能会有所帮助,但在这种情况下,它没有提供任何进一步的细节。像Bob一样,我最终不得不在ILDASM中打开每个程序集,直到找到引用依赖程序集的旧版本。

我确实尝试使用VS 2010 Beta 2的MSBUILD(连接文章指出这在CLR的下一个版本中得到了修复),但也没有提供更多的细节(可能是在Beta 2后修复的)。

有没有更好的(更自动化的)方法?


当前回答

快速修复:

右键单击解决方案->管理解决方案->的NuGet包在巩固下,你可以看到是否有不同版本的相同的包被安装。卸载不同版本,安装最新版本。

其他回答

正如这里提到的,您需要删除未使用的引用,警告就会消失。

如果您有resharper,删除解决方案中所有未使用的参考。

ASP。NET构建管理器通过按字母顺序浏览文件夹来构建网站,对于每个文件夹,它会找出它的依赖项并首先构建依赖项,然后再构建选定的文件夹。

在这种情况下,有问题的文件夹是~/Controls,在开始时被选择构建,出于未知的原因,它将一些控件构建为一个单独的程序集,而不是像其他控件一样在同一个程序集中(似乎与某些控件依赖于同一文件夹中的其他控件的事实有关)。

然后构建的下一个文件夹(~/File-Center/Control)依赖于根文件夹~/,根文件夹~/依赖于~/Controls,所以文件夹~/Controls再次被构建,只是这次分离到自己程序集的控件现在与其他控件连接到相同的程序集,分离的程序集仍然被引用。

因此此时至少有2个程序集具有相同的控件,构建失败。

虽然我们仍然不知道为什么会发生这种情况,我们能够通过将Controls文件夹名称更改为ZControls来解决它,这样它就不会在~/File-Center/Control之前构建,只在之后构建,这样它就应该被构建。

我也犯了同样的错误,无法用其他答案来计算。我发现我们可以“巩固”NuGet包。

右键单击解决方案 单击“管理Nuget包” 合并选项卡并更新到相同的版本。

Mike Hadlow发布了一个名为AsmSpy的小控制台应用程序,它很好地列出了每个程序集的引用:

Reference: System.Net.Http.Formatting
        4.0.0.0 by Shared.MessageStack
        4.0.0.0 by System.Web.Http

Reference: System.Net.Http
        2.0.0.0 by Shared.MessageStack
        2.0.0.0 by System.Net.Http.Formatting
        4.0.0.0 by System.Net.Http.WebRequest
        2.0.0.0 by System.Web.Http.Common
        2.0.0.0 by System.Web.Http
        2.0.0.0 by System.Web.Http.WebHost

与依赖MSBuild输出相比,这是获取警告MSB3247底部的更快方法。