Как отловить место в программе, которое приводит к загрузке dll?
Проблема решена чисто философским путём. Попал пальцем в небо. Читая статью https://weblog.west-wind.com/posts/2012/Nov/03/Bac... (ещё от 2012 года!!!) обратил внимание на абзац:
И тут я повнимательнее глянул на код функции Main:
И тут у меня сложился этот пазл! Возникло предположение, что dot.net перед выполнением функции смотрит на тело функции и проверяет, а потребуются ли для этого кода загрузка библиотек? Идиотское предположение, но... почему бы не проверить. Вынес тело функции в отдельную функцию:
И теперь в функции Main библиотечный LongFile.AppendAllText метод не виден! И случилось ЧУДО! Программа нормально запустилась! Выходит от перестановки слагаемых результат меняется ))) Решено.
А как эта библиотека подключена? В ссылках или вручную? Если вручную - то оттуда же сразу можно перейти на все места, где оно используется. Если в ссылках - то смотреть, где используется и добавить там мониторинг. Самый простой способ - начать с мониторинга доступа к файловой системе.
https://docs.microsoft.com/en-us/sysinternals/down... - добавляете фильтры на: процесс - ваше приложение, тип события - файловая система, содержит - название dll файла.