Перенаправление и анализ кода привязки сборок
Я использую 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,
- Щелкните правой кнопкой мыши на своем проекте и выберите "Свойства" во всплывающем меню.
- Перейдите на вкладку "Анализ кода" и снимите флажок "Включить анализ кода при сборке"
Очистить и построить. Ошибка анализа кода должна исчезнуть.