2

我正在尝试在已从 MVC 1 升级到 MVC 3 的项目上使用 FxCop。我第一次运行我的项目时,它要求我为其定位 MVC 3。一旦我这样做了,它会继续运行一段时间,然后让我找到 MVC 1,我觉得这很奇怪,因为我不再在这台机器上安装它并且网站运行正常。这是它给我的信息:

FxCop 想要 System.Web.Mvc 1

在我们的 Web.config 文件中,我们有以下内容,它是在您升级 MVC 版本时自动创建的:

<dependentAssembly>
  <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>

有谁知道如何摆脱这个错误,以便 FxCop 完成对这个项目的分析?

4

2 回答 2

0

FxCop 也有同样的问题。您是否检查过其他可能依赖于 MVC1 的程序集?AFAIK MVC1 需要 3 个程序集:

System.Web.Mvc  
System.Web.Routing  
System.Web.Abstractions  

也许路由或抽象留在您的参考文献中?

于 2012-10-09T21:11:48.553 回答
0

作为让 FxCop 运行的解决方法,您可以更新 FxCop 配置并设置以下内容:

<appSettings>
    <add key="AssemblyReferenceResolveMode" value="StrongNameIgnoringVersion" />
</appSettings>

它目前最有可能设置为 StrongName。

允许的值为:

- 根本不匹配强名称,任何具有相同文件名的程序集都被视为匹配。

StrongName - 包括程序集名称、版本、文化和公钥标记在内的强名称必须完全匹配。

StrongNameIgnoringVersion - 包括程序集名称、文化和公钥标记在内的强名称必须完全匹配。具有相同或更高版本的程序集被视为匹配。`

但是,我会用DotPeek 之类的东西查看您的程序集,以尝试确定它为什么仍然引用旧版本。

于 2012-11-07T18:11:42.203 回答