装配绑定重定向和代码分析

时间:2010-10-28 12:23:17

标签: visual-studio-2010 visual-studio code-analysis assemblybinding

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

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

<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时遇到以下错误:无法解析程序集引用: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。

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

4 个答案:

答案 0 :(得分:64)

只是为了补充更准确的答案:

您需要运行FxCopCmd.exe:

fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion

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

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

答案 1 :(得分:6)

有关背景信息,请参阅http://davesbox.com/archive/2008/06/10/reference-resolution-changes-in-code-analysis-and-fxcop-part-1.aspxhttp://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项目中指定此项。

答案 2 :(得分:4)

除了peter_raven解决方案,您还可以指定使代码分析与TFS构建一起使用的选项。在“MSBuild Arguments”中的构建选项,流程选项卡,高级类别中添加:

/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion

答案 3 :(得分:1)

如果您需要关闭代码分析,请使用此选项。

在Visual Studio 2012中,

  1. 右键单击您的项目,然后从弹出菜单中选择“属性”。
  2. 点击“代码分析”标签,取消选中“在构建时启用代码分析”
  3. 清洁和建造。代码分析错误应该消失。