Question

J'ai un complément Excel dans lequel j’ajoute tellement de modules de classe qu’il est maintenant très volumineux. Je souhaite le convertir en bibliothèque de types ou en package COM afin de pouvoir le réutiliser pour les autres applications de la suite MS Office.

J'ai porté le complément dans Visual Studio en tant que projet de bibliothèque de classes, mais Excel Automation ne reconnaît pas les classes du fichier .dll compilé. Intuitivement, j’ai besoin d’un manifeste, d’une interface ou de quelque chose comme ça dans mon code.

Que dois-je savoir pour exposer les méthodes et propriétés d'une classe à utiliser dans OLE Automation?

Était-ce utile?

La solution

Je suppose que puisque vous avez utilisé le manifeste de phrase, vous assemblez cette DLL à l'aide d'une plate-forme de développement .net VS2003, VS2005 ou VS2008 par rapport à un VS 6.0

Ce lien fournit un ensemble détaillé d'étapes nécessaires à l'enregistrement d'un assemblage .NET pour utilisation. en tant que composant COM.

La seule chose que l'article ne mentionne pas régulièrement est la création de mes propres GUID. Utilisez l'élément Créer un GUID dans le menu Outils, puis insérez-les au-dessus des classes, des interfaces et des énumérations à exposer pour COM.

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")]
public interface IMyCOMClass  {
    void MyMethod(); 
}

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"),
ClassInterface(ClassInterfaceType.None)]
public class MyCOMClass : IMyCOMClass {
    public void MyMethod() { 
        //implementation here
    }
}

La deuxième chose que je fais est d’utiliser une interface séparée pour la partie COM implémentée par la classe. Le raisonnement à suivre est lié à la cassabilité de COM lorsque l'interface change, pensez à DLL Hell.

J'espère que ça aide, Bill.

Autres conseils

(en supposant qu'il s'agisse d'un projet .NET)

Outre l'obligation d'ajouter les guides à vos interfaces et à vos classes, vous devez également les marquer avec l'attribut ComVisible (à moins que vous n'ayez marqué l'ensemble de l'assemblage). Vous devez également utiliser tlbexp.exe pour exporter les métadonnées en tant que bibliothèque de types COM à des fins de référencement dans des clients non gérés.

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