Как найти то, что зависит от конкретной версии конкретной зависимости? - PullRequest
14 голосов
/ 02 февраля 2011

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

Не удалось загрузить файл или сборку 'Castle.Windsor, Версия = 2.1.0.0, Культура = нейтральная, 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 ]

9 голосов
/ 02 февраля 2011

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

1 голос
/ 02 февраля 2011

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

1 голос
/ 02 февраля 2011

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

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

См. MSDN .

...