wake-up-neo.net

MSHTML DLL unter Windows 10

Ich habe eine C # -Lösung, die Smith Html Editor verwendet (Ich entwickle ein Hauptprojekt, das dieses verwendet, daher weiß ich nicht viel über diese Bibliothek), das einen Bezug zu MSHTML herstellt. Dies funktionierte bis zu meinem Upgrade auf Windows 10 einwandfrei und es wurde keine MSHTML mehr gefunden. Ich kann direkt auf die DLL im GAC-Ordner verweisen, und es hört auf, sich zu beschweren und baut es auf, aber es werden einige Laufzeitfehler im Zusammenhang mit dem Editor angezeigt, der nicht instanziiert wird.

Nach ein wenig Recherche stellt sich heraus, dass MSHTML aus Windows 10 ausläuft, da es nun EdgeHTML verwendet. Hat jemand eine Idee, wie ich das umgehen kann? 

Die Lösung funktioniert immer noch für Windows 7.

22
Tyress

Ich habe gerade einen blog post zu diesem Problem erstellt. Das Problem ist, dass die Microsoft.mshtml.dll-Assembly im globalen Assemblycache während des Aktualisierungsvorgangs von ActiveX nicht mehr registriert wird. Um dieses Problem zu beheben, müssen Sie "regasm" in der Assembly ausführen:

  1. Öffnen Sie eine Instanz von "Developer Command Prompt for VS2013" (oder welche Version von Visual Studio Sie gerade verwenden). Führen Sie es als Administrator aus, indem Sie mit der rechten Maustaste auf das Symbol klicken und "Als Administrator ausführen" auswählen.
  2. Navigieren Sie zu "C:\Windows\Assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a". Es ist möglich, dass sich Ihr Weg ändert. Um dies zu überprüfen, wechseln Sie zu "C:\Windows\Assembly\GAC\Microsoft.mshtml" und geben Sie "dir" ein.
  3. Wenn Sie sich im richtigen Pfad befinden, geben Sie regasm Microsoft.mshtml.dll ein.
35
user1233749

Ich hatte genau das gleiche Problem. Das Hinzufügen der Datei c:\windows\system32\mshtml.tlb hat funktioniert. Beachten Sie, dass es NICHT die DLL ist, sondern die TLB. Vielen Dank für diese Frage und danke Hans für die Antwort :)

Ich hatte das gleiche Problem und ich denke Was in meinem Fall los ist, ist, dass das Projekt ursprünglich ein VS2012-Projekt unter Windows 7 war und eine primäre Interop-Assembly installiert war, auf die verwiesen wurde. Wenn ich den Verweis auf MSHTML entfernte und wieder hinzufügte und die Dateien anders veränderte, bestand der einzige Unterschied darin, dass der <WrapperTool> von primary in tlbimp und <EmbedInteropTypes> von false in true geändert wurde.

An einem bestimmten Punkt fügte Visual Studio die Möglichkeit hinzu, die COM-Wrapper direkt in die Assembly einzubetten, anstatt auf PIAs zu verweisen. Ich gehe daher davon aus, dass bei einer neuen Installation von VS2015 unter Windows 10 keine PIAs mehr installiert werden, da sie nicht erforderlich sind. Aus diesem Grund wird das Problem durch Entfernen und erneutes Hinzufügen der Referenz behoben, und das Projekt sollte auch auf älteren Betriebssystemen problemlos funktionieren.

4
Josh

MSHTML ist immer noch eine wichtige Komponente in Windows 10, auch wenn Edge als Standardbrowser verwendet wird. Sie finden es unter "C:\Windows\System32". Um aus den offiziellen FAQs zu zitieren:

http://dev.modern.ie/platform/faq/will-the-webbrowser-control-work-with-mi

MSHTML:

In Windows 10 verwendet das WebBrowser-Steuerelement die Internet Explorer-Option alte Rendering-Engine, mshtml.dll. Zu diesem Zeitpunkt ist EdgeHTML nicht über das WebBrowser-Steuerelement verfügbar.

EdgeHtml

In Universal Windows Apps, die für Windows 10 erstellt wurden, steuert das WebView-Steuerelement Verwenden Sie Microsoft EdgeHTML. WebView-Steuerelemente in Apps, die für Windows 8 & .__ erstellt wurden. 8.1 lädt das MSHTML weiterhin, um die Kompatibilität zu gewährleisten.

3
Malte Lantin

Für den Fall, dass all dies für Sie nicht funktioniert hat, ist hier meine Lösung, die sich von der oben beschriebenen unterscheidet und für mich funktioniert hat:

Ich habe die Datei Microsoft.mshtml.dll im globalen Assemblycache registriert.

Hier ist die Lösung:

Schritt 1: Öffnen Sie die Eingabeaufforderung für Entwickler, indem Sie dev in Ihr Windows 10-Suchfeld eingeben und mit der rechten Maustaste auf die Eingabeaufforderung für Entwickler für VSxxxx klicken und als Administrator ausführen

Schritt 2: Navigieren Sie zu Ihrer Microsoft.mshtml.dll-Bibliothek. In meinem Fall:

CD C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies>

Schritt 3 Führen Sie den folgenden Befehl aus, um sich im globalen Assemblycache zu registrieren:

gacutil -i Microsoft.mshtml.dll

Weitere Informationen finden Sie in diesem Web-Artikel: https://docs.Microsoft.com/en-us/dotnet/framework/app-domains/how-to-install-an-Assembly-into-the-gac

2

Tolle Lösung Aron!

In meinem Fall war es:

CD C:\Program Files (x86) [Enter]
CD Microsoft Visual Studio\2019 [Enter]
CD Community\Common7\IDE\PublicAssemblies [Enter]
gacutil -i Microsoft.mshtml.dll [Enter]
exit

(Ich habe diese Zeilen in getrennten Zeilen geschrieben, da das Lesen durch Zeilenumbruch verwirrend wurde.).

2
craisin

In meinem Fall befand sich die Microsoft.mshtml-Datei aus irgendeinem Grund in einem anderen Verzeichnis. Doppelklicken Sie in Visual Studio auf die Assemblyreferenz. Dort finden Sie den Pfad dazu. Öffnen Sie nun die "Developer Command Prompt for VS2017", und geben Sie die folgende cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies ein. Dann regasm Microsoft.mshtml.dll.

1
Helder Pinto

Mit VS 2015 hatte ich dieses Problem nach dem letzten Update von Windows 10. Ich habe den Verweis "Microsoft HTML Object Library" entfernt und dem Projekt erneut hinzugefügt. Dies löste das Problem in meinem Fall.

1
Wolf