web-dev-qa-db-fra.com

System.Runtime.InteropServices.COMException (0x80040154):

Je reçois une exception dans un projet c #:

System.Runtime.InteropServices.COMException (0x80040154): L'extraction de la fabrique de classes COM pour le composant avec le CLSID {877AA945-1CB2-411C-ACD7-C70B1F9E2E32} a échoué en raison de l'erreur suivante: 80040154.

Qu'est-ce que cela pourrait signifier?

15
Charles Ma

Cela signifie que l'identifiant de classe 877AA945-1CB2-411C-ACD7-C70B1F9E2E32 n'est pas dans le registre.

Vous pouvez le vérifier en ouvrant regedit.exe et en parcourant HKEY_CLASSES_ROOT\CLSID\{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}. Si vous exécutez une application 32 bits sur un système d'exploitation 64 bits, recherchez HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}

Si c'est le cas, cela peut être un autre problème, mais il manque probablement. Pour résoudre ce problème, vous exécuterez généralement le programme d'installation qui distribue cet objet COM. Si vous n'en avez pas et que vous savez quelle dll implémente l'objet, vous pouvez exécuter regsvr32.exe (ou regasm.exe pour une dll gérée).

30
csharptest.net

J'exécutais un COM C++ DLL à partir d'un projet Win Forms C # sur un système d'exploitation 64 bits. J'ai changé le projet Win Forms C # en x86, puis il a été relancé et cela a fonctionné. Pour faire ça:-

  1. Cliquez avec le bouton droit sur le projet .NET et choisissez Propriétés _
  2. Sélectionnez l'onglet Build
  3. Définissez cible de la plate-forme sur x86
  4. Recompiler et relancer

Concept de changement de bit de réponse de George J

1
CJBS

J'exécute des tests automatisés dans Selenium et j'ai eu le même problème. Le problème a été résolu en basculant "Architecture du processeur par défaut" sur x86 dans les paramètres de test.

1
George J

Dans mon cas, la classe a été enregistrée correctement. 

Mais la propriété Activer les applications 32 bits propriété du pool d'applications IIS de l'application utilisant la classe a été définie sur True . Il ne l'a pas trouvé parce que l'application a été construite dans n'importe quel mode CPU/64 bits.

Le paramétrage Activer les applications 32 bits à False corrige le problème.

0
Bhupinderjit Dhanoa