【问题标题】:Assembly Binding Redirection and Code Analysis程序集绑定重定向和代码分析
【发布时间】:2010-10-28 12:23:17
【问题描述】:

我在 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。

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

【问题讨论】:

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


    【解决方案1】:

    只是补充一点更准确的答案:

    您需要使用以下命令运行 FxCopCmd.exe:

    fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion
    

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

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

    【讨论】:

    • 谢谢。我在下面添加了行,&lt;Configuration Condition=" '$(Configuration)' == '' "&gt;Debug&lt;/Configuration&gt;&lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "&gt;&lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "&gt; 下的 CodeAnalysisAdditionalOptions&gt;/assemblyCompareMode:StrongNameIgnoringVersion&lt;/CodeAnalysisAdditionalOptions&gt;
    • 不幸的是,由于某种原因,这对我不起作用;我仍然遇到同样的错误。
    • 你太棒了@peter_raven!
    【解决方案2】:

    有关背景信息,请参阅 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 项目中指定它。

    【讨论】:

      【解决方案3】:

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

      /p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion
      

      【讨论】:

        【解决方案4】:

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

        在 Visual Studio 2012 中,

        1. 右键单击您的项目并从弹出菜单中选择“属性”。
        2. 点击“代码分析”选项卡并取消选中“在构建时启用代码分析”

        清理和构建。代码分析错误应该会消失。

        【讨论】:

          猜你喜欢
          • 2012-04-27
          • 2017-02-16
          • 2019-12-21
          • 1970-01-01
          • 2021-10-01
          • 2021-10-18
          • 2021-01-15
          • 2011-03-30
          相关资源
          最近更新 更多