J'ai une solution C # qui utilise Smith Html Editor (je développe sur le projet principal qui l'utilise, donc je ne connais pas grand chose à propos de cette bibliothèque), qui fait référence à MSHTML. Cela a bien fonctionné jusqu'à ma mise à niveau vers Windows 10 et il ne peut plus trouver MSHTML. Je peux faire directement référence à la DLL dans le dossier GAC. Il cesse de se plaindre et génère donc, mais certaines erreurs d'exécution liées à l'éditeur ne sont pas instanciées.
Après quelques recherches, il s'avère que MSHTML est progressivement supprimé de Windows 10 car il utilise maintenant EdgeHTML. Quelqu'un a-t-il une idée de la façon dont je peux contourner cela?
La solution fonctionne toujours pour Windows 7.
Je viens de créer un blog post sur ce sujet. Le problème est que l'assembly Microsoft.mshtml.dll dans le Global Assembly Cache n'est plus enregistré auprès d'ActiveX pendant le processus de mise à niveau. Pour résoudre ce problème, il est nécessaire d'exécuter "regasm" sur l'assembly:
regasm Microsoft.mshtml.dll
J'ai eu exactement le même problème. L'ajout du fichier c:\windows\system32\mshtml.tlb a fonctionné. Notez que ce n'est pas la dll, mais le tlb. Merci beaucoup d'avoir posé cette question et merci Hans pour la réponse :)
J'avais le même problème et (pense} _ que se passe-t-il, du moins dans mon cas, c'est que le projet était à l'origine un projet VS2012 sur Windows 7 et qu'un assemblage d'interopérabilité primaire a été référencé. Lorsque j'ai supprimé et rajouté la référence à MSHTML et effectué un diff sur les fichiers, la seule différence était que le <WrapperTool>
était passé de primary
à tlbimp
et que <EmbedInteropTypes>
était passé de false à true.
À un moment donné, Visual Studio a ajouté la possibilité d’incorporer les wrappers COM directement dans l’Assembly au lieu de faire référence à des PIA. J’imagine donc qu’une nouvelle installation VS2015 sur Windows 10 n’installe plus les PIA car elles ne sont plus nécessaires. C’est la raison pour laquelle supprimer et rajouter la référence corrige le problème et que le projet devrait continuer à bien fonctionner sur les anciens systèmes d’exploitation.
MSHTML est toujours un composant important de Windows 10, même avec Edge comme navigateur par défaut. Vous pouvez le trouver dans "C:\Windows\System32". Pour citer la FAQ officielle:
http://dev.modern.ie/platform/faq/will-the-webbrowser-control-work-with-mi
MSHTML:
Dans Windows 10, le contrôle WebBrowser utilisera le .__ d'Internet Explorer. moteur de rendu hérité, mshtml.dll. Actuellement, EdgeHTML n’est pas disponible via le contrôle WebBrowser.
EdgeHtml
Dans les applications Windows universelles conçues pour Windows 10, le contrôle WebView utilisez Microsoft EdgeHTML. Contrôles WebView dans les applications conçues pour Windows 8 et 8.1 continuera à charger le MSHTML pour préserver la compatibilité.
Pour une raison quelconque dans mon cas, le fichier Microsoft.mshtml
était situé dans un autre répertoire. Sur Visual Studio, double-cliquez sur la référence Assembly et vous y trouverez le chemin. Ouvrez maintenant «l'invite de commande du développeur pour VS2017», tapez le cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies
suivant. Puis regasm Microsoft.mshtml.dll
.
En utilisant VS 2015, j'ai eu ce problème après la dernière mise à jour de Windows 10. J'ai supprimé la référence "Bibliothèque d'objets Microsoft HTML" et l'ai ajoutée à nouveau au projet. Cela a résolu le problème dans mon cas.