2

今天继承一个新项目,试图让数百个警告消失,并为此感到难过。ASP.NET MVC 2,framework 4.0 项目在 VS2010 中编译得很好,但是当构建过程移交给 aspnet_compiler.exe 时,我得到以下内容(从输出窗口剪切和粘贴):

AfterBuild:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v temp -p C:\data\crecare\CreCare20110403\CreCare.Mvc\\..\CreCare.Mvc 
ASPNETCOMPILER : warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll'

在对象浏览器中进行搜索和对项目中的引用进行繁琐的逐个程序集审查都不会出现任何多重定义。据我所知,以前的团队没有尝试在以前的 ASP.NET 版本中构建任何扩展(我了解到此错误的一个原因);我认为这从一开始就针对 4.0。

这只是一个警告,我想我可以忽略它(你甚至不能使用 aspnet_compiler.exe 进行 /nowarn,所以我必须查看它们)——但这让我错了。关于如何追捕这个的任何建议?项目路径中的“\..\”是否应该让我担心?我正在运行 64 位 Windows;它不是同时查看 x86 和 64 吗?

值得注意的是,在解决方案中使用VS2010中的对象浏览器只能找到aspnet_compiler.exe找到的程序集中的类型;搜索该类型只会给出一个结果。aspnet_compiler.exe 是在寻找 VS2010 没有的地方吗?

4

1 回答 1

1

就像你说的那样,这是由于 Mono.Cecil。

如果您确实引用了 Mono.Cecil.Dll 并实现了扩展方法 /,则此警告可能会成为错误,因为在执行此操作时,编译器会优先考虑 Mono.Cecil 实现。

我不明白为什么应该用于 .net 4 的 db4o 程序集没有考虑到这一点,但我们可以确认相同的问题,因为我们已经研究了相同的问题。

只要您只复制到输出 Mono.Cecil(我们添加为链接并将其设置为复制到输出)而不是使用普通参考,一切正常。这个警告很烦人,但是考虑到 db4o 上这些程序集的奇怪情况,我们宁愿暂时不处理构建它的源代码。

于 2011-05-17T04:32:31.560 回答