Как найти то, что зависит от конкретной версии конкретной зависимости?

Я получаю эту ошибку при запуске приложения (не во время компиляции):

Не удалось загрузить файл или сборку 'Castle.Windsor, версия =2.1.0.0, Culture= нейтральный, PublicKeyToken=407dd0808d44fbdc' или одна из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

В моем решении есть много проектов, где, по возможности, используются ссылки на проекты, но некоторые из этих проектов имеют ссылки на сборки для внешних зависимостей.

Как я могу легко узнать, какой проект ищет эту конкретную версию Castle.Windsor.dll? У меня нет этой версии, и я пытаюсь использовать 2.5.2 (последнюю версию), поэтому я хочу найти виновника и обновить его, чтобы использовать последнюю версию.

Спасибо заранее.

ОБНОВИТЬ
Я добавил обеззараженный журнал Fusion ниже. Кажется, он говорит мне, что Caliburn.Castle требует Castle.Windsor, Version=2.1.0.0 (что было бы ошибкой, так как я использую 2.5), но сборка Fusion исследует как фактическое нахождение Castle.Windsor, Version=2.5.1.0 вместо.

Я правильно понял?

=== Pre-bind state information ===
LOG: User = Barney\neil
LOG: DisplayName = Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
 (Fully-specified)
LOG: Appbase = file:///[Debug folder of my exe]
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = [Filename of my exe]
Calling assembly : Caliburn.Castle, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: [Config file for my exe]
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///[Debug folder of my exe]/Castle.Windsor.DLL.
LOG: Assembly download was successful. Attempting setup of file: [Debug folder of my exe]\Castle.Windsor.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

3 ответа

Решение

Вы можете использовать утилиту Fuslogvw.exe, которая предоставит вам больше информации о вызывающей сборке. Скотт Ханслман также написал об этом в блоге.

Вы смотрели средство просмотра журнала привязки сборки (Fuslogvw.exe)?

Это должно предоставить всю необходимую информацию.

Смотрите на MSDN.

Инструмент FusionLog - лучший инструмент для подобных вещей, но иногда он будет указывать только на ваш код. Попробуйте включить многословие для MSBuild, и вы сможете отследить его до того места, где находится компиляция в случае сбоя.

Другие вопросы по тегам