Мы работаем над проектом для клиента, использующего ASP.NET C# с EF 6 и .Net Framework 4.6.1. У нас есть несколько интеграционных и модульных тестов, которые работают немного медленнее, поэтому мы решили запустить профилировщик. В наших поисках мы наткнулись на ANTS Performance Profiler и решили попробовать.
Мы создали сеанс профилирования с исполняемым файлом .NET и настроили режим профилирования как line-level & method-level timings - All methods inc. framework
. Однако при запуске профилировщика мы не видим ни одного из наших методов и сталкиваемся с сообщением об ошибке
The profiler did not find any methods with the source code. To see all profiled methods, in Display Options below select 'All methods.
Как я могу это решить?
Сначала мы столкнулись с этой проблемой при использовании VSTest, а затем решили перейти на MSTest, так как документация у него лучше (1). Это также не сработало.
Мы провели небольшое расследование и попробовали несколько ссылок (2) (3), но ни одна из них не помогла.
Мы обнаружили, что возможная проблема заключалась в том, что ANTS Profiler не находил файл .pdb
. Однако мы убедились, что файл .pdb
существует в той же папке и имеет то же имя, что и библиотека DLL сборки. Мы также запустили Process Monitor и убедились, что процесс MSTest.exe
читает правильный .pdb
файл.
Вот варианты запуска:
C:\Program Files (x86)\Microsoft Visual Studio\2017\TestAgent\Common7\IDE\MSTest.exe
/testcontainer:Projeto.dll /test:Projeto.Features._001_UsuarioFeature._001_A_1_1* /testsettings:"C:\Users\Documents\projeto\TestSettings1.testsettings"
C:\Users\Documents\projeto\bin\Debug
Дополнительная информация:
Мы используем ANTS Performance Profiler версии 10.1.5.1275.
Операционная система: Windows 10 Корпоративная
Отредактировано @RenatoChencinski, спасибо :)
Мы связались со службой поддержки RedGate, и они решили нашу проблему.
Запуск профилировщика с аргументом командной строки /testcontainer
сам по себе сработал! Выяснилось, что причиной сбоя был параметр /testsettings, а затем, как только я его удалил, профилировщик смог увидеть исходный код.
Наблюдения: Аргумент /testsettings
потребовался после того, как мы изменили наш инструмент тестирования на MSTest. Он отвечал за ссылки на некоторые из наших зависимостей. После удаления параметра решение состояло в том, чтобы жестко закодировать путь к нашим зависимостям, просто ради теста.
Вы также должны включить версию профилировщика производительности ANTS для дальнейшего использования.