Frage

Ich habe Excel-Add-in denen ich so viele Klasse-Module hinzufügen, die es jetzt sehr voluminös. Ich möchte es in eine Art Bibliothek oder ein COM-Paket konvertieren, so dass ich es für die anderen Anwendungen in der MS-Office-Suite erneut verwenden kann.

ich portierte die Add-in für Visual Studio als Klassenbibliothek Projekt, aber Excel-Automatisierung erkennt nicht die Klassen in der kompilierten DLL-Datei. Intuitiv ich glaube, ich würde einen offensichtlichen benötigen, eine Schnittstelle oder so etwas in meinem Code.

Was muß ich wissen, um eine Klasse Methoden und Eigenschaften für die Verwendung in OLE-Automatisierung?

aussetzen
War es hilfreich?

Lösung

Ich bin davon aus, da Sie die Phrase Manifest verwendet, Sie zusammenbauen diese DLL einer .net-Entwicklungsplattform VS2003, VS2005 oder VS2008 mit im Vergleich zu einem VS 6.0

Die Link rel="nofollow ein detailliertes Reihe von Schritten erforderlich, um eine .NET-Assembly für die Verwendung registrieren als COM-Komponente.

Das einzige, was der Artikel nicht erwähnt, dass ich routinemäßig tun, ist meine eigene GUIDs erstellen. Verwenden Sie die GUID erstellen Element im Menü Extras sie dann legen Sie über den Klassen, Schnittstellen und Aufzählungen Sie für COM verfügbar gemacht werden sollen.

[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
    }
}

Das zweite, was ich tue, ist eine separate Schnittstelle für den COM-Teil verwenden, die von der Klasse implementiert wird. Die Begründung hierfür ist mit der Teilbarkeit von COM zu tun, wenn die Schnittstellenänderungen, denken DLL-Hölle.

Hope, das hilft, Bill.

Andere Tipps

(vorausgesetzt, es ist ein .NET-Projekt)

Zusammen mit den Guids auf Ihre Schnittstellen und Klassen hinzufügen möchten, müssen Sie diese auch mit dem ComVisible Attribut markieren (sofern Sie die ganze Versammlung mit ihm markiert haben). Außerdem müssen Sie die Tlbexp.exe verwenden, um die Metadaten als COM-Typbibliothek zu exportieren für die Referenzierung in nicht verwalteten Clients.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top