Перестало работать покрытие кода в VS2010 - предположительно после установки PEX - PullRequest
1 голос
/ 14 февраля 2012

Мне удалось получить покрытие кода в VS2010 Premium, работая с одним из моих решений.Результаты вышли и все было хорошо.Это было некоторое время назад.

Тем временем я установил PEX & Moles и немного поэкспериментировал с этими инструментами, то есть завершил ряд уроков и т. Д. Теперь, если я попытаюсь использовать те же настройки тестов для вычисленияпокрытие кода Я получаю следующее сообщение:

Механизм анализа покрытия кода вызвал исключение (я): не удается загрузить DLL 'Microsoft.VisualStudio.Coverage.Symbols.dll'.Процедура не найдена.

(Исключение из HRESULT: 0x8007007F)

(«Процедура не найдена» - это мой перевод локализованного текста).

Я попытался включить файлы DLL, на которые жалуется VS2010, в качестве элементов развертывания, и я также могу видеть, что они отображаются в папке тестового развертывания.Однако это ничего не решило.

Это постоянная ошибка, независимо от того, для какого проекта я пытаюсь вычислить покрытие кода.Я подозреваю, что виноват PEX / Moles, потому что он работал до установки pex, и теперь покрытие кода больше не работает из среды IDE VS2010.Конечно, могут быть и другие причины, но у меня не так много других установленных расширений.Кроме того, временные интервалы между работающим и не работающим покрытием кода более или менее совпадают с моей установкой PEX.

Может ли это быть связано с сохранением где-то пользовательских настроек?Я заметил после переустановки IDE, что все мои старые настройки, где волшебным образом на месте.Может быть, мне нужно что-то удалить где-то?

Возможно, мне следует также указать, что я собираю свои сборки на месте.Не задействован ни сайт группы, ни TFS-сервер.

В поисках решения я нашел следующие ссылки, однако ни одна из них не имела прямого отношения к моей проблеме:

В последней приведенной выше ссылке указано, что необходимо сохранить файл Microsoft.VisualStudio.Coverage.Symbols.dll и Microsoft.VisualStudio.Файлы Coverage.Analysis.dll находятся в той же папке.Оба находятся в следующем месте на моем компьютере:

    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies

Мой компьютер на самом деле является 64-разрядным, однако указанные выше файлы расположены в 32-разрядном расположении.Может ли это быть причиной?

Спасибо за любую помощь в решении этой проблемы (которая может быть вообще не связана с PEX!)

Редактировать 2012-02-16 : я могучтобы выполнить мои тесты, и я также получаю файл data.coverage, сгенерированный в соответствующем месте.Однако, дважды щелкнув файл data.coverage в Проводнике и попытавшись развернуть его в VS2010 (окно результатов покрытия кода), я получаю следующее сообщение об ошибке:

Механизм анализа покрытия кода вызвал исключение (я)):

Не удалось найти файл изображения "имя файла DLL, который я хочу установить на инструменте"?

Если я загляну в папку out моих результатов теста, то увижу, что DLL, упомянутая в приведенном выше сообщении об ошибке, действительно присутствует!Есть также файл .instr, который, как я понимаю, является фактическим инструментарием, который имел место?

В настоящее время я не могу перезаписать файл dbghelp.dll в C: \ Windows \ system32 из-за отсутствия прав,Однако я попытался также включить файл dbghelp.dll, расположенный в Microsoft Visual Studio 10.0 \ Common7 \ IDE, в качестве элемента развертывания в моих настройках теста.Оба файла dbghelp.dll (а также Microsoft.VisualStudio.Coverage.Symbols.dll, который я также добавил в качестве элемента развертывания) присутствуют в папке Testresults out.Но я все еще получаю вышеупомянутые сообщения об ошибках.

Edit 2012-02-17 Я проверил версию dll, упомянутую ниже на компьютере коллеги

  • Microsoft.VisualStudio.Coverage.Symbols.dll
  • dbghelp.dll

У нас точно такие же версии, расположенные в том же месте! После извлечения моего проекта из нашего исходного репозитория (включая настройки теста) на свою машину он смог запустить тесты в проекте И впоследствии отобразить покрытие кода в VS2010. Таким образом, виновник, скорее всего, не сами dll, а что-то изменилось в среде Visual Studio?

Редактировать 2012-02-17 Было высказано предположение, что причина этой работы на моей машине коллег, а не на моей, может быть связана с несоответствием версий dll, зарегистрированных в GAC. Я попытался извлечь содержимое GAC и использовать Guiffy, чтобы получить разницу в итоге ок. 100 DLL несоответствие. Ни один из них в версиях, хотя и ни один, связанный с DLL упомянутых в этом посте. Мой коллега также попытался установить 64-разрядную версию PEX и смог выполнить одно исследование и впоследствии отобразить покрытие кода для тестового проекта. Под покрытием кода я ссылаюсь на оригинальную функцию VS2010, а не функцию в PEX для просмотра покрытия кода. Так что я предполагаю, что такого рода правила исключают PEX, но все равно не помогают мне вернуть результаты покрытия кода VS2010. : - (

Редактировать 2013-10-22 Мне только что назначили новую машину Windows 8 с установленным VS2010 и R # 7.1.1000.900. Я не установил PEX и получаю ту же ошибку. Может ли это быть связано с некоторыми неудобными настройками в файле testsettings? Я попытался набрать юнит-тест в Resharper, но все еще получаю ту же ошибку ...

1 Ответ

0 голосов
/ 16 февраля 2012

Я не уверен, имеет ли это какое-либо отношение к Пексу.Попробуйте заменить dbghelp.dll в каталоге Windows\system32 на более новую версию в \Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE.

...