Средство просмотра журнала привязки сборки довольно глючное (например, чаще всего оно не очищает журнал) и довольно мало функций (поиск, упорядочивание, фильтрация почти доступны).
Поэтому мне было интересно, либо
- Существует существующая альтернатива
- Как-то возможно глобально перехватывать события Assemblyresolve, поэтому я могу сделать это сам.
- Microsoft где-то опубликовала исходный код, и нам разрешено его разветвлять.
За исключением второго варианта, я знаю, что вы можете создать реализацию CLR Host относительно просто (хотя и нетривиально), но это кажется излишним, если все, что вам нужно, — это немного более тонкий контроль, чем существующее средство просмотра журнала Fusion.
Обратите внимание: я видел этот ответ, но, похоже, он не отвечает на этот вопрос. вопрос.
В ответ на некоторые комментарии:
В ответ на некоторые комментарии: я знаю о перенаправлении сборки, событиях AssemblyResolve
и AssemblyLoad
, но первое можно использовать только в крайнем случае (последнее в цепочке проверки), а второе сработает только после сборка загружена. Ни один из них не может использоваться в других процессах, кроме вашего собственного, и ни один из них не может показать весь процесс зондирования.
Я заметил, что при использовании RyuJIT некоторые привязки выглядят немного по-другому, в другом порядке в результате другого способа компиляции и загрузки скомпилированного IL. Хотя мне удалось исследовать и решить проблемы с привязкой, я очень не люблю fuslogvw.exe
как трудоемкий (хотя и единственный в своем роде и полезный) инструмент. Поэтому я начал (довольно бесплодный) поиск лучшего инструмента для наблюдения за процессом зондирования.
AppDomain.AssemblyLoad
что ты ищешь? Это даст вам возможность проверять каждую сборку, загружаемую в домен приложения. СобытиеAppDomain.AssemblyResolve
предоставляет все сборки до их загрузки, что позволяет определить ошибки сборки. - person xxbbcc   schedule 10.12.2015app.config
, но не с помощьюAssemblyResolve
(т. е. перенаправления со строгим именем). Через управляемый код, на самом деле, нет возможности показать весь процесс зондирования, толькоfuslogvw.exe
может их показать, но этот инструмент архаичен и ужасно неудобен в использовании. Я надеюсь на лучший способ контролировать процесс зондирования. Я думаю, что я должен свернуть свой собственный (и, возможно, поделиться с сообществом;). - person Abel   schedule 11.12.2015AssemblyResolve
к<Module>.cctor
(в этом случае Fusion терпит неудачу, потому что я терплю неудачу) или в более обычном месте в коде (в этом случае Fusion иногда завершается успешно, потому что он разрешает его до того, как я привязываю событие ). Он также завершается с ошибкой или успешно в зависимости от хост-процесса (например, сбой nUnit, успех NCrunch). Для решения подобных проблем Fusion Log Viewer является необходимым злом. Я обновил вопрос, надеюсь, теперь он немного понятнее. - person Abel   schedule 11.12.2015AssemblyResolve
, то я хотел бы услышать об этом ( если раскрытие этой части разрешено). Он работает сbindingRedirect
внутриapp.config
, но в некоторых случаях мне это нужно из кода (когда просто dll загружается другим процессом, он не будет соблюдать настройки.config
). Сборки без строгих имен я могу связать с чем угодно, но Fusion не позволяет мне перенаправлять сборки со строгими именами. - person Abel   schedule 11.12.2015