Итак, я знаю, что было много вопросов, подобных этому, но за последние дни я пролил много ответов, и ничего не помогло.FileLoadException на загрузке DLL
Я разрабатываю приложение WPF, которое ссылается на кучу внешних DLL. В частности, есть одна DLL, называемая DefinitionInterpreter, которая, как оказалось, вызывает проблемы. В каждом проекте я ссылаюсь на него, он упрям и предпочитает не работать. Мне удалось заставить его работать в моем модульном тестовом наборе, однако я не могу, стараюсь, как я могу, заставить его работать в моем приложении WPF.
Я пробовал GAC, очищаю свой проект, добавляя его и удаляя, перезагружая, проверяя версию, проверяя зависимости, и ничего не работает.
я получаю такое же исключение:
Не удалось загрузить файл или сборку 'DefinitionInterpreter, Version = 3.6.0.0, культура = нейтральной, PublicKeyToken = нуль' или один из его зависимостей. Определение манифеста размещенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Я пробовал открывать DLL в ildasm.exe и ничего необычного не показывал. Это только зависимости System.Xml, System.Core и mscorlib.
Когда я проверяю манифест, он проверяет, что версия 3.6.0.0
Дело в том, что на самом деле получает меня является то, что он работает в одном из моих проектов, но я не могу заставить его работать в другом , хотя они ссылаются на одну и ту же DLL (тот же путь и все).
Любые предложения? Я использую .NET 4.0 (это требование к проекту, равное 4.0), и попробовал как x86, так и x64.
Edit:
После просмотра Fusion Вход детали, я получаю это как выход:
*** Assembly Binder Log Entry (7/18/2013 @ 7:07:42 PM) ***
The operation failed.
Bind result: hr = 0x80131040. No description available.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable E:\Src\Hermes\Tool\bin\Debug\HermesClient.vshost.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = DefinitionInterpreter, Version=3.6.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///E:/Src/Hermes/Tool/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = HermesClient.vshost.exe
Calling assembly : SomeAssembly, Version=13.5.13.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: E:\Src\Hermes\Tool\bin\Debug\HermesClient.vshost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///E:/Src/Hermes/Tool/bin/Debug/DefinitionInterpreter.DLL.
LOG: Assembly download was successful. Attempting setup of file: E:\Src\Hermes\Tool\bin\Debug\DefinitionInterpreter.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: DefinitionInterpreter, Version=3.6.0.0, Culture=neutral, PublicKeyToken=75a99a2a5bcd4c96
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: The assembly reference did not match the assembly definition found.
ERR: Run-from-source setup phase failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Ссылка в моем CSProj выглядит следующим образом:
<Reference Include="DefinitionInterpreter, Version=3.6.0.0, Culture=neutral, PublicKeyToken=75a99a2a5bcd4c96, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\DefinitionInterpreter.dll</HintPath>
<Private>True</Private>
</Reference>
Когда я выполняю команда sn -T DefinitionInterpreter.dll
Я получаю 75a99a2a5bcd4c96. Я честно понимаю, что во время работы он считает, что токен открытого ключа равен нулю и почему существует несоответствие.
Использование «Fusion Log Viewer», чтобы увидеть, где оно загрузилось в обоих случаях, может дать вам некоторые идеи о том, почему это происходит. При заданном объеме информации вряд ли будет дан ответ ... –
@AlexeiLevenkov После игры с программой просмотра журнала Fusion я получил ее на работу, и, по-видимому, существует несогласованность открытого ключа по неизвестным причинам. –
Журнал не соответствует сообщению об исключении, обязательно его обновите. Попробуйте удалить хотя бы один возможный режим сбоя, скопировав этот проект на ваш диск C :. –