Подтвердить что ты не робот

Не удалось загрузить файл или сборку "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.

Спасибо

4b9b3361

Ответ 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>