Не удалось загрузить файл или сборку "Microsoft.mshtml... Не удалось выполнить сильную проверку имени
Я создал программу WPF/С#, и я использую интернет-контроль для редактирования HTML WYSIWYG.
это обычная исполняемая программа.
он работает на большинстве компьютеров, однако некоторые компьютеры дают мне следующую ошибку.
Не удалось загрузить файл или сборку 'Microsoft.mshtml, Version = 7.0.3300.0, Culture = нейтрально, PublicKeyToken = b03f5f7f11d50a3a 'или одной из его зависимостей. Сильное имя не удалось выполнить проверку.
Файл Microsoft.mshtml.dll распространяется вместе с программой. Это со всеми другими необходимыми DLL в той же папке, что и exe файл.
Вот результат от Fuslogvw
*** Assembly Binder Log Entry (1/14/2010 @ 6:36:51 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable C:\Documents and Settings\office\Desktop\Database\DATABASE.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = CAMPUSREMOTE\office
LOG: DisplayName = Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/office/Desktop/Database/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = DATABASE.exe
Calling assembly : ChabadOnCampusMainFrontEnd, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Start binding of native image Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
WRN: No matching native image found.
Спасибо
Ответы
Ответ 1
Убедитесь, что файл Microsoft.mshtml.dll, распространяемый вместе с программой, является файлом PIA, а не файлом Office. Некоторые сайты утверждают, что файлы Office "подписаны с задержкой", а файл PIA (установленный с установкой VS) является подписанной копией. на моем компьютере у меня есть 3 разных версии файла Microsoft.mshtml.dll, (тот же размер файла, но различный контент):
-
"c:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools для Office\PIA\Office11\Microsoft.mshtml.dll"
-
"c:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools для Office\PIA\Office12\Microsoft.mshtml.dll"
-
"c:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll"
Удалите ссылку "Microsoft.mshtml.dll" из проекта.
Используйте вкладку "Добавить ссылку", ".Net", выберите файл PIA, используйте опцию "copy loacal".
(Это сработало для меня...)
Атар
Ответ 2
Microsoft.mshtml.dll из папки PIA не подписан.
Если вы подписали проект, вы должны взять версию из папки "Primary Interop Assemblies".
Для этого:
1. Удалите ссылку на Microsoft.mshtml(если у вас есть один в своем проекте)
2. Нажмите "Добавить ссылку" и не выбирайте "Расширения", но "Обзор" и укажите "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies" (для .64-разрядных машин) - эта версия подписано.
3. Измените свойства (выберите ссылку microsoft.mshtml и нажмите F4), чтобы установить:
Вставить Interop Types = false
Копировать Local = true
4. Перестройте свой проект
Ответ 3
Первым шагом для отслеживания этой проблемы является определение, действительно ли это файл Mcirosoft.mshtml.dll или одна из его зависимостей. Лучший способ сделать это - использовать fuslogvw для отслеживания сбоя загрузки сборки. Он предоставит подробную информацию о сбое сборки.
Как только вы отмените сборку сбоя, отправьте сообщение с результатами.
ИЗМЕНИТЬ
В этом предупреждающем сообщении говорится, что операция в конечном итоге преуспела. Кажется, в нем нет ошибки.
Ответ 4
У меня тоже была эта проблема, но проблема заключалась в использовании TFS Build 2008.
Подсказка была относительной и должна была быть изменена на точный путь.
В противном случае во время сборки он продолжал собирать Office mshtml.dll
<HintPath>..\..\..\..\..\..\..\..\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath>
<HintPath>C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll</HintPath>