程序集绑定redirect和代码分析

我在Visual Studio 2010的Mvc 3.0.0.0项目中使用DotNetOpenAuth(它引用System.Web.Mvc版本1.0.0.0)。

我正在使用程序集绑定redirect,如下所示:

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> 

一切工作正常,除了代码分析,给了我以下错误: –

CA0001:读取模块X时遇到以下错误:无法parsing程序集引用:System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。

CA0058:找不到引用的程序集“System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”。 这个程序集是分析所需要的,并被引用:X.

有没有办法让代码分析工具尊重程序集绑定redirect?

只是为了补充一点更精确的答案:

您需要运行FxCopCmd.exe:

 fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion 

或者修改每个构buildconfiguration的属性组的Visual Studio项目文件,如下所示:

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> ... <CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions> </PropertyGroup> 

请参阅http://davesbox.com/archive/2008/06/10/reference-resolution-changes-in-code-analysis-and-fxcop-part-1.aspx和http://davesbox.com/archive/2008 /06/14/reference-resolutions-changes-in-code-analysis-and-fxcop-part-2.aspx了解一些背景信息。

在VS2010 / FxCop 10.0中,为fxcopcmd.exe提供了一个新的/ assemblyCompareMode命令行开关,允许您指定比较模式,而不用考虑.config文件。 您可以使用CodeAnalysisAdditionalOptions MSBuild属性在VS项目中指定此项。

除了peter_raven解决scheme之外,您还可以指定使用TFS构build进行代码分析的选项。 在“MSBuild Arguments”中的build选项,process选项卡,高级类别中添加:

 /p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion 

如果您需要closures代码分析,请使用此function。

在Visual Studio 2012中,

  1. 右键单击您的项目,然后从popup菜单中select“属性”。
  2. 点击“代码分析”选项卡,并取消选中“启用代码分析生成”

清洁和build设。 代码分析错误应该消失。