122 votes

L'erreur HRESULT E_FAIL a été renvoyée par un appel à un composant COM. VS2012 lors du débogage.

J'ai un problème de débogage d'un projet migré de Visual Studio 2010 à 2012. Chaque fois que je veux le déboguer, je reçois le message d'erreur :

"L'erreur HRESULT E_FAIL a été renvoyée par un appel à un composant COM".

La compilation et l'exécution de l'application dans un serveur IIS local fonctionnent bien - mais je ne peux pas déboguer.

L'autre changement, à part le passage à VS2012, est que j'utilise désormais Team Foundation Server pour le contrôle des sources et le suivi des problèmes, mais je ne vois pas en quoi cela pourrait avoir une incidence.

Je peux réduire la liste à ce qui suit

  • Le fichier du projet - il a été transféré de VS 2003 en tant que projet de site web et a été découpé et modifié dans les différentes versions.
  • Bibliothèque d'exécution Crystal Report/une autre bibliothèque

Quelqu'un a une idée ?

3voto

J'ai trouvé la solution ci-dessous sur https://developercommunity.visualstudio.com/content/problem/260196/add-a-reference-raise-error-error-hresult-e-fail-h.html l'adresse.

Cela a fonctionné pour moi dans VS 2019 :

1 Ouvrez "Developer Command Prompt for VS 2017" en tant qu'administrateur.

2 CD dans " C:\Program Fichiers (x86) \Microsoft Visual Studio \2017\Professional\Common7\IDE\PublicAssemblies "

3 Lancez "gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll".

Après un redémarrage, tout a bien fonctionné.

2voto

yiev Points 101

J'ai eu le même problème après une mise à niveau de VS2013 à VS2015.

Le projet sur lequel je travaillais s'est référencé lui-même. Alors que VS2013 s'en fichait, VS2015 n'aimait pas ça et j'ai eu cette erreur. Après avoir supprimé la référence, l'erreur a disparu. Il m'a fallu environ 4 heures pour le découvrir...

2voto

alekoo73 Points 519

Il suffit de supprimer le dossier des paquets. Cela m'a aidé

2voto

Dheeraj Bansal Points 11

Cause profonde : Microsoft.VisualStudio.Shell.Interop.11.0.dll est absent du GAC.

Solution : 1. Allez dans le menu Démarrer et ouvrez l'invite de commande pour Visual Studio. 2. Entrez la commande gacutil -i Microsoft.VisualStudio.Shell.Interop.11.0.dll 3. Si votre système est incapable de trouver ce fichier dll, vous pouvez le télécharger à partir du gestionnaire de paquets Nuget et fournir le chemin de la dll.

Tout est prêt ! Appuyez sur la touche entrée et vous avez terminé !

1voto

Tousif Ahmed Points 11

J'ai écrit un programme simple pour ouvrir différents dossiers en cliquant sur des boutons spécifiques. J'ai fait en sorte que les propriétés du fichier soient "contenu" et "copie si plus récent" pour faire le déploiement. Ainsi, si j'installe le fichier exe dans l'autre logiciel, il installe toutes ses ressources et exécute le programme correctement. Donc, c'est tout sur mon programme. Pendant le développement, si j'exécute le programme pour le vérifier, il affiche l'erreur suivante

"HRESULT E_FAIL a été renvoyé par un appel à un composant COM".

et je n'ai pas pu ouvrir la vue du concepteur. Mais j'ai en quelque sorte trouvé une solution facile pour moi. Je ne suis pas sûr que cela fonctionnera pour d'autres ou non.

Voici la solution :

Copiez tout le dossier de l'application à un autre endroit. Cliquez sur le fichier de l'application à partir de là. cela ne fonctionnera pas puisqu'il s'agit d'une simple copie et que vous ne verrez pas le concepteur.

  1. Dans l'explorateur de solutions, supprimez le fichier form1.vb (ou un nom différent s'il a été modifié pendant le développement).
  2. Dans l'explorateur de solutions>clic droit>adjoindre un élément existant> rechercher le fichier Form1.vb à partir de l'endroit où le dossier est copié (emplacement d'origine).
  3. Exécutez le programme dans le nouvel emplacement. Il fonctionnera

Le problème avec cette solution est que si vous voulez ajouter quelque chose et qu'après avoir lancé le programme vous trouvez la même erreur, vous devez copier tout le dossier de l'application dans un autre endroit et suivre les étapes ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X