2010-01-14 8 views
17

Ich habe ein WPF/C# -Programm erstellt und verwende das Internet-Steuerelement für die WYSIWYG-HTML-Bearbeitung.Datei oder Assembly konnte nicht geladen werden 'Microsoft.mshtml ... Starke Namensvalidierung fehlgeschlagen

es ist ein reguläres ausführbares Programm.

funktioniert es auf den meisten Computern, aber einige Computer geben mir den folgenden Fehler.

konnte nicht Datei oder Assembly 'Microsoft.mshtml, Version = 7.0.3300.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten laden. Starker Name Validierung fehlgeschlagen.

Die Datei 'Microsoft.mshtml.dll' wird mit dem Programm verteilt. Es ist mit allen anderen erforderlichen DLLs im selben Ordner wie die EXE-Datei.


Hier ist die Ausgabe von 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. 

Dank

Antwort

19

Überprüfen Sie, dass die mit dem Programm verteilte Datei "Microsoft.mshtml.dll" die PIA-Datei und keine Office-Datei ist. Einige Websites geben an, dass die Office-Dateien "Verzögerung signiert" sind und die PIA-Datei (die mit der VS-Installation installiert wird) eine signierte Kopie ist. auf meinem Computer habe ich drei verschiedene Versionen von 'Microsoft.mshtml.dll' Datei (gleiche Datei-Größe, aber unterschiedliche Inhalte):

  1. „c: \ Programme \ Microsoft Visual Studio 9.0 \ Visual Studio Tools für Office \ PIA \ Office11 \ Microsoft.mshtml.dll“

  2. "c: \ Programme \ Microsoft Visual Studio 9.0 \ Visual Studio Tools for Office \ PIA \ Office12 \ Microsoft.mshtml.dll"

  3. "c: \ Programme \ Microsoft.NET \ Primäre Interop Assemblies \ Microsoft.mshtml.dll"

Entfernen Sie "Microsoft.mshltml.dll" Verweis aus dem Projekt. Verwenden Sie "Add Reference", ". Net" Registerkarte, wählen Sie die PIA-Datei, verwenden Sie "Kopieren loacal" -Option. (Es funktionierte für mich...

)

Atara

+0

B "H Danke. dass basicaly ist, was ich herausgefunden. einige, wie die dela y signed ddl ist diejenige, die zum Projekt hinzugefügt wird und auf meinem lokalen Rechner verteilt wird, aber die .net-Laufzeit hat trotzdem die signierte genommen, weil sie in der PIA war. Sobald Sie die eine von der PIA verteilen, gehen alle Probleme weg. – Rabbi

+0

Atara deine Antwort war genau richtig, danke, du hast mir Stunden Arbeit gerettet, danke !!! und danke stackoverflow !! –

+0

Wenn jemand "Copy Local" nicht aktivieren kann, müssen Sie "Interop-Typen einbetten" auf "False" setzen. (lief einfach in das) – Lyra

2

Der erste Schritt dieses Problem aufzuspüren ist, um zu bestimmen, ob es Mcirosoft.mshtml.dll wirklich oder eine seiner Abhängigkeiten. Der beste Weg, dies zu tun, ist fuslogvw, um den Fehler beim Laden der Baugruppe zu verfolgen. Es liefert detaillierte Informationen darüber, welche Baugruppe fehlerhaft ist.

Sobald Sie deterimen welche Montage, bitte Post zurück mit den Ergebnissen versagt.

EDIT

Diese Botschaft schließlich gelang es, dass die Operation schlägt warnen. Es scheint nicht der Fehler darin zu haben.

+0

ich stellte die Ergebnisse in der ursprünglichen Post – Rabbi

1

hatte ich das gleiche Problem auch, aber mein Problem wurde mit TFS Build-2008 Die HintPath Verwandter war und musste den genauen Pfad geändert werden. Ansonsten während des Build es das Büro Aufnehmen gehalten 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 von PIA-Ordner nicht signiert ist.
Wenn Sie ein Projekt unterschrieben haben, müssen Sie die Version aus dem Ordner "Primary Interop Assemblies" übernehmen.


, das zu tun:

1. Entfernen Bezug auf Microsoft.mshtml (wenn Sie in Ihrem Projekt haben)

2. Klicken Sie auf "Add Reference" und wählen Sie als NICHT "Extensions", sondern auf "Durchsuchen" und zeigen Sie auf "C: \ Programme (x86) \ Microsoft.NET \ Primary Interop Assemblies" (für .64-Bit-Maschinen) - diese Version ist signiert.

3. Eigenschaften bearbeiten, um (Microsoft.mshtml Referenz und drücken Sie F4 wählen) einzustellen:

Embed Interop-Typen = false
Copy Local = true


4. Erstellen Sie Ihre Projekt