2010-01-14 2 views
17

Я создал программу WPF/C#, и я использую интернет-контроль для редактирования HTML WYSIWYG.Не удалось загрузить файл или сборку «Microsoft.mshtml ... Не удалось выполнить сильную проверку имени

это обычная исполняемая программа.

он работает на большинстве компьютеров, однако некоторые компьютеры дают мне следующую ошибку.

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

Благодарности

ответ

19

Убедитесь, что файл Microsoft.mshtml.dll, распространяемый вместе с программой, является файлом PIA, а не файлом Office. Некоторые сайты утверждают, что файлы Office «подписаны с задержкой», а файл PIA (установленный с установкой VS) является подписанной копией. на моем компьютере, у меня есть 3 разные версии файла 'Microsoft.mshtml.dll', (тот же размер файла, но с разным содержанием):

  1. «C: \ Program Files \ Microsoft Visual Studio 9.0 \ Visual Studio Инструменты для Office \ PIA \ Office11 \ Microsoft.mshtml.dll»

  2. "C: \ Program Files \ Microsoft Visual Studio 9.0 \ Инструменты Visual Studio Tools для Office \ PIA \ Office12 \ Microsoft.mshtml.dll"

  3. «c: \ Program Files \ Microsoft.NET \ Primary Interop Assemblies \ Microsoft.mshtml.dll»

Удалите ссылку "Microsoft.mshtml.dll" из проекта. Используйте вкладку «Добавить ссылку», «.Net», выберите файл PIA, используйте опцию «copy loacal». (Это сработало для меня ...)

Атара

+0

B "H Спасибо. это basicaly, что я выяснил. некоторые, как Дела y подписанный ddl - это тот, который добавляется в проект и распространяется, однако на моей локальной машине среда выполнения .net все равно приняла подписанную, поскольку она была в PIA. Итак, как только вы распространите один из PIA, все проблемы исчезнут. – Rabbi

+0

Atara ваш ответ был на месте, спасибо, вы спасли мне часы работы, спасибо !!! и спасибо stackoverflow !! – 2011-02-14 20:10:01

+0

Если кто-то не может включить «Копировать локальную», вам необходимо установить «Вставить типы взаимодействия» в значение «Неверно». (просто наткнулся на это) – Lyra

2

Первый шаг к выслеживая этот вопрос, чтобы определить, если это действительно Mcirosoft.mshtml.dll или один из его зависимостей. Лучший способ сделать это - использовать fuslogvw для отслеживания сбоя загрузки сборки. Он предоставит подробную информацию о сбое сборок.

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

EDIT

Это предупреждающее сообщение говорит о том, что операция в конце концов удалось. Кажется, в нем нет ошибки.

+0

Я отправил результаты в исходном сообщении – Rabbi

1

Я тоже была такая же проблема, но мой вопрос с помощью TFS сборки 2008. hintpath относительна и должен был быть изменен на точный путь. В противном случае во время сборки он держал подбирая офис 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> 
3

Microsoft.mshtml.dll из PIA папки не подписан.
Если вы подписали проект, вы должны взять версию из папки «Primary Interop Assemblies».


Чтобы сделать это:

1. Удалите ссылку на Microsoft.mshtml (если у вас есть в вашем проекте)

2. Нажмите кнопку «Добавить ссылку» и чем НЕ выберите «Extensions», но «Просмотр» и укажите «C: \ Program Files (x86) \ Microsoft.NET \ Primary Interop Assemblies» (для .64-разрядных машин) - эта версия подписана.

3. Изменение свойств (выберите microsoft.mshtml ссылку и нажмите F4) для того, чтобы установить:

Вставить Interop Типы = ложные
Copy Local = истина


4. Восстановите ваш проект

Смежные вопросы