#c# #.net #assemblies
#c# #.net #сборки
Вопрос:
У меня есть проект, который я пытаюсь развернуть на другом компьютере, но установка завершается неудачей, поскольку для этого требуется, чтобы сборка была установлена в GAC. Но эта сборка (System.ServiceModel.DomainServices.Хостинг 4.0.0.0) не имеет отношения к моему проекту, поэтому я пытаюсь удалить как его, так и прямую ссылку, которая его загружает.
Мой проект — напрямую зависит от-> Неизвестной ссылки — косвенно зависит от-> System.ServiceModel.DomainServices.Хостинг 4.0.0.0
Как я могу узнать, какая из прямых ссылок в моем проекте косвенно загружает эту бесполезную сборку DomainServices? Я не вижу способа сделать это с помощью отражения…
(Это общий вопрос, но если это поможет, я использую C # в .NET 4.0, Visual Studio 2010 и ClickOnce для развертывания проекта.)
Ответ №1:
Вы могли бы попробовать включить ведение журнала Fusion Logging, это позволит вам просмотреть все сбои при загрузке сборки.
Вернемся к основам: использование Fusion Log Viewer для отладки неясных ошибок загрузчика
Комментарии:
1. Это хорошее решение и помогло мне, спасибо. Однако, похоже, вам нужна установленная Visual Studio для запуска ведения журнала Fusion? Возможно ли установить ее самостоятельно, если у нас есть эта проблема на ПК без VS?
2. Это потрясающе. Я никогда не слышал о Fusion до этого поста. Моя проблема заключалась в том, что у меня был тестовый проект, который нормально компилировался, но я не мог подключиться к нему с помощью отладчика при его запуске, потому что сборки с прямыми ссылками удалялись из bin при компиляции. Я не мог разобраться с этим, пока не посмотрел на окно вывода компиляции, в котором в основном говорилось system. веб ссылался неправильно. Сетевая версия, то есть профиль клиента. Это было достаточно легко исправить, но затем я обнаружил, что задаюсь вопросом: «это winforms.app, какая ссылка на system.web?» Похоже, что id вручную искал ссылку до этого поста. v здорово, спасибо
Ответ №2:
Попробуйте найти это с помощью Reflector. Также обратите внимание, что класс Assembly имеет метод GetReferencedAssemblies , поэтому вы также сможете найти его с помощью reflection.
Комментарии:
1. Да, я знаю о сборке. GetReferencedAssemblies() но это подскажет мне только сборки, на которые из моего проекта есть прямые ссылки, что я уже знаю (и что вы также можете узнать, используя VS Debug, procexp и т.д.). Я ищу косвенные / транзитивные ссылки. Reflector удобен, если я просматриваю каждую из прямых ссылок одну за другой и изучаю ее. Есть ли более быстрый способ сделать это? Это должно быть распространенным вариантом использования.