Est-ce qu'un composant COM Enregistrement sans être utilisé sans l'enregistrer sur la machine de développement?

StackOverflow https://stackoverflow.com/questions/6351226

  •  28-10-2019
  •  | 
  •  

Question

J'ai un composant Enregistrement-COM libre j'ai développé qui fonctionne très bien sur les machines cibles sans avoir besoin d'enregistrer le composant. Il est dans une dll qui a TLB intégré, et une ressource RT_MANIFEST qui a le manifeste qui énumère les dépendances de montage et CLSID du composant.

Dans Visual Studio (2008) Je dois encore enregistrer ce composant COM à faire au moins deux choses que j'ai essayé. Lors de l'ajout d'une référence au composant, je ne peux pas sélectionner la propriété isolée pour la référence à moins que le composant est enregistré. Je ne peux pas non créer des instances de l'objet lorsque le débogueur est en cours d'exécution, sauf si le composant est enregistré. Je peux cependant ajouter la référence et compiler l'application et l'exécuter sans enregistrer le composant.

Est-il possible d'utiliser un composant Enregistrement-COM gratuit dans Visual Studio sans l'enregistrer, ou doit-il être inscrit sur la machine de développement pour que tout fonctionne correctement?

Était-ce utile?

La solution

Il est important ici de comprendre la différence entre la compilation et l'utilisation d'exécution d'un composant COM. COM sans reg est purement une fonction d'exécution. Le manifeste que vous écrivez qui décrit l'interface COM est la partie sans inscription. Vous ne devez pas enregistrer le composant COM dans le registre de la machine. Vous fournissez les informations d'enregistrement dans un fichier au lieu. Ce qui signifie que vous n'avez pas besoin d'un installateur. Ce qui signifie que vous aussi isolés de problèmes d'enregistrement. Mieux connu sous l'enfer des DLL.

Les clés du Registre, ou les entrées dans le manifeste, sont importants pour la figure de l'aide COM ce DLL doit être chargé lorsque le client COM, il demande de créer une instance de l'objet COM.

Ceci est très distinct de la compilation. Une bibliothèque de type est très utile pour indiquer au compilateur que vous avez écrit le code correct ou non. Est-ce que le composant COM ont vraiment une interface IFoo? Est-ce que l'interface IFoo ont vraiment une méthode Mumble () qui prend deux arguments? La bibliothèque de type indique au compilateur l'apparence de l'interface comme et permet au compilateur de faire une vérification statique du code que vous avez écrit. Distinct de « contraignant fin » BTW, une option qui vous permet de code client écriture COM sans une bibliothèque de type (et donc sans vérification de type). Commun dans les langages de script.

Réaffirmant. Enregistrement sans COM est purement sur l'installation, pas d'écriture de code

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top