Когда файлы pdb будут скопированы в каталог теневых копий?

Я делаю некоторые модификации OpenCover и NUnit, чтобы удовлетворить свои потребности.

Вкратце, я хочу получать информацию о покрытии, даже если в Nunit включено теневое копирование. Однако OpenCover не может отслеживать сборку, когда файл pdb отсутствует. Когда в NUnit включено теневое копирование, тестируемая сборка копируется в теневой каталог, и OpenCover не может найти соответствующий файл PDF.

Сначала я подумал, что .Net Runtime просто не копирует файлы pdb в теневой каталог. Но после дальнейшего изучения этой проблемы я обнаружил, что среда выполнения копирует файлы pdb, но не одновременно с копированием сборок.

Сейчас я понимаю, что среда выполнения сначала скопирует сборки в теневые каталоги. Затем эти сборки будут загружены, и Opencover получит уведомление. OpenCover обнаруживает, что файлов pdb нет, поэтому эти сборки игнорируются. Некоторое время спустя файлы pdb были скопированы, но OpenCover не смог этого заметить, поэтому не смог отследить эти сборки.

Итак, мой вопрос: в какое точное время .Net Runtime копирует файлы pdb в теневые каталоги? И возможно ли, что я изменю OpenCover, чтобы он мог отслеживать эти скопированные с помощью теней сборки?


person Nan Wang    schedule 26.01.2015    source источник


Ответы (1)


Однако OpenCover не может отслеживать сборку, когда файл pdb отсутствует.

Это сделано по замыслу, поскольку инструментирование каждой сборки, загруженной без PDB, означает инструментирование каждой операции IL, а не каждой точки последовательности, информация о которой находится в PDB.

Некоторое время спустя файлы pdb были скопированы, но OpenCover не смог этого заметить, поэтому не смог отследить эти сборки.

Если PDB копируется позже, то для OpenCover уже слишком поздно, поскольку среда выполнения уже загрузила сборку, поэтому OpenCover принял свои решения по инструментам.

Теперь OpenCover использует различные места для поиска PDB.

  1. он выглядит в той же папке, из которой была загружена сборка
  2. он смотрит в папку установленную -workingdir
  3. он смотрит в своем текущем каталоге

Однако для поддержки / noshadow я обычно нахожу, что параметр -mergebyhash решает эту проблему, если нет, то я использую №2 из списка выше, самый простой в использовании

person Shaun Wilde    schedule 26.01.2015