Перенаправление привязки сборки и анализ кода - PullRequest
44 голосов
/ 28 октября 2010

Я использую 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, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35.

и

CA0058: ссылка на сборку 'System.Web.Mvc, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'не найдена.Эта сборка требуется для анализа и на нее ссылались: X.

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

Ответы [ 4 ]

64 голосов
/ 31 марта 2011

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

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

fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion

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

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  ...
  <CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
</PropertyGroup>
6 голосов
/ 28 октября 2010

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

4 голосов
/ 11 декабря 2013

В дополнение к решению peter_raven вы можете указать опцию, чтобы Code Analysis работал со сборкой TFS.Добавьте это в опциях сборки, вкладке процесса, расширенной категории в «Аргументах MSBuild»:

/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion
1 голос
/ 27 марта 2014

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

В Visual Studio 2012,

  1. Щелкните правой кнопкой мыши по вашему проекту и выберите «Свойства» во всплывающем меню.
  2. Нажмите на вкладку «Анализ кода» и снимите флажок «Включить анализ кода при сборке»

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

...