我们有一个ASP.NET MVC 4解决方案,其中包含一些参考,它们已经建立了大约两年没有问题。但是,今天早上安装了KB2993928和KB2993937之后,我们不能再在Windows 7计算机上的此解决方案上运行FxCop。
我感觉这是因为此更新更改了GAC中System.Web.Mvc程序集的DLL版本。这是因为在GAC中,我目前可以找到3个不同的System.Web.Mvc DLL,这些DLL今天都已更新。
我们在构建中收到的错误如下:
6>MSBUILD : error : CA0001 : The following error was encountered while reading module 'FrontEnd.Implementation': Assembly reference cannot be resolved: System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. [C:\Project\FrontEnd\02-Implementation\02-Implementation.csproj]
6>MSBUILD : error : CA0058 : The referenced assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be found. This assembly is required for analysis and was referenced by: S:\Deliverables\FrontEnd\bin\FrontEnd.Implementation.dll. [C:\Project\FrontEnd\02-Implementation\02-Implementation.csproj]
由于我们使用ASP.NET MVC 4,因此其中一个引用间接引用了此版本3.0 DLL。例如,RazorGenerator引用版本3.0.0.0。可能还有其他人。据我所知,没有新版本的RazorGenerator。
我在GAC中看到的System.Web.Mvc版本是:3.0.50813.1、4.0.08080和5.0.20821.0。
我从我们的项目中删除了对System.Web.Mvc的引用,而是将Mvc添加为NuGet包。这可以修复我们的编译问题,但是由于间接引用,FxCop仍然不起作用。
如果需要任何其他信息,请告诉我。
如果此问题是由引用引起的,而引用又依赖于那些特定的程序集,则可以通过强制FxCop仅使用StrongName并忽略版本号来解决此问题。此解决方案在此处介绍。
当然,真正的解决方案是将引用的程序集(具有间接依赖性)更新为较新的版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句