Как исправить ошибку FxCop с кодом 512? - PullRequest
10 голосов
/ 31 октября 2011

Во время рефакторинга, перемещения по некоторым сборкам и т. Д. Я скомпилировал решение в Visual Studio и получил одно сообщение об ошибке: «FxCop завершен с кодом ошибки 512». Сборка выглядит нормально, кроме этой ошибки.

Кто-нибудь знает, что это на самом деле означает в деталях? Где я могу начать искать, как это исправить? Установка FailOnError в false не является путем, по которому я хочу идти.

Ответы [ 6 ]

6 голосов
/ 03 мая 2013

Все остальные ответы на правильном пути, но пропустить одну небольшую часть.

  • Подавление - это опция, но вы можете скрыть ошибку относительно важной библиотеки DLL, и это не очень хорошая вещь.
  • Каталог случайных зависимостей подвержен ошибкам.
  • XML-отчеты - это место, где нужно искать, но задача FxCop MSBuild не показывает, куда она их помещает: (

Чтобы запустить FxCop из командной строки, мне пришлось выполнить следующее:

FxCopCmd.exe /f:<Assembly.dll> /o:<OutputFileName> /verbose

FxCopCmd - это то, что использует задача MSBuild. Он вернет код ошибки 512, если отсутствует сборка , даже если сборка не требуется для запуска . Смотрите ниже сообщение FxCop:

Не удалось найти сборку с косвенной ссылкой 'Newtonsoft.Json, версия = 4.0.2.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed'. Эта сборка не требуется для анализа , однако результаты анализа могут быть неполными. На эту сборку ссылались: Removed.dll.

Добавьте ссылку на эту DLL, а затем код ошибки исчезнет.

5 голосов
/ 27 сентября 2012

Я нашел решение.Это было потому, что я ссылался на сборку с более высокой версией, и FxCop жаловался на это с предупреждением CA0060 ниже.Решение состоит в том, чтобы отредактировать файл FxCopCmd.exe.config и изменить

<add key="AssemblyReferenceResolveMode" value="StrongName" />

на

<add key="AssemblyReferenceResolveMode" value="StrongNameIgnoringVersion" />
1 голос
/ 20 июня 2013

Код ошибки FxCop 512 возникает, если бегун гидролокатора не обнаружил расположение зависимых сборок: Чтобы устранить эту ошибку, вы должны установить свойство assemblyDependencyDirectories в Sonar-Runner. Значение этого должно быть разделенным запятыми списком шаблонов пути, чтобы найти каталоги, где можно найти сборки зависимостей.

Эти пути могут быть абсолютными или относительными, отправной точкой являются папки, в которых находятся файлы csproj. Также специальный ключ $(SolutionDir) может быть использован для построения пути относительно корневой папки решения (то есть, где находится файл sln).

Например: $(SolutionDir)/**/libs (а не $(SolutionDir)/**/libs/*.dll)

Например: sonar.fxcop.assemblyDependencyDirectories=$(SolutionDir)/**/libs,$(SolutionDir)/**/Debug

Чтобы получить подробное решение и устранить еще одну ошибку бегуна сонара нажмите здесь .

1 голос
/ 31 октября 2011

Согласно MSDN это означает, что не удалось сослаться на какую-то сборку. Этот парень предлагает переопределить его (цитирую его блог):

The following can be placed directly into the Post-build event field in your project's properties.
<YOUR FXCOP COMMAND>
IF 512 == %ERRORLEVEL% (
    echo postbuildevent:fxcop warning FXCOP:FxCopCode analysis was unable to complete.
    SET ERRORLEVEL = 0
) 
0 голосов
/ 13 апреля 2013

Не уверен, что вы все еще ищете решение, но что обычно работает для меня, так это добавление fxcop cmdline-option / d: {dir-of-random-assemblys}, который, по сути, указывает fxcop искать в этом дополнительном каталоге для сборок. Добавление ссылки на proj, который не нуждается в этом, на мой взгляд, плохая идея. Это также небезопасный способ решения проблемы.

http://msdn.microsoft.com/en-US/library/bb429449(v=vs.80).aspx

0 голосов
/ 22 января 2012

Первое место, где нужно искать дополнительную информацию - это файл отчета в формате XML, который обычно имеет некоторую полезную информацию в конце.

В противном случае, другой метод, который я использовал в подобных случаях, состоит в том, чтобы сделать тот же запрос в графическом интерфейсе FxCop; это вызовет диалоговое окно, когда не удастся разрешить ссылку на сборку, и попросит вас указать на соответствующую сборку. Зная, какая это сборка, значительно упрощает добавление дополнительного пути к каталогу.

...