Перенаправление и анализ кода привязки сборок

Я использую DotNetOpenAuth (который ссылается на System.Web.Mvc версии 1.0.0.0) в проекте Mvc 3.0.0.0 в Visual Studio 2010.

Я использую перенаправление привязки сборки следующим образом: -

<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.

Есть ли способ заставить инструмент анализа кода соблюдать перенаправление привязки сборки?

Ответ 1

Просто добавим немного более точный ответ:

Вам нужно либо запустить FxCopCmd.exe с помощью:

fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion

или измените файл проекта Visual Studio для каждой группы свойств конфигурации сборки, например:

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

Ответ 2

Смотрите 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 есть новый /assemblyCompareMode командной строки для fxcopcmd.exe, который позволяет вам указывать режим сравнения, не перебирая файл .config. Вы можете указать это в проекте VS, используя свойство CodeAnalysisAdditionalOptions MSBuild.

Ответ 3

В дополнение к решению peter_raven вы можете указать вариант, чтобы сделать анализ кода с помощью сборки TFS. Добавьте это в опции сборки, вкладку процесса, расширенную категорию в "Аргументы MSBuild":

/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion

Ответ 4

Используйте это, если вам нужно отключить анализ кода.

В Visual Studio 2012,

  • Щелкните правой кнопкой мыши на своем проекте и выберите "Свойства" во всплывающем меню.
  • Перейдите на вкладку "Анализ кода" и снимите флажок "Включить анализ кода при сборке"

Очистить и построить. Ошибка анализа кода должна исчезнуть.