1 Erstellen Sie eine neue Klassenbibliothek MyTestDLL
2 Klicken Sie mit der rechten Maustaste auf das Projekt „MyTestDLL“ – „Eigenschaften –“ Generieren – „Für COM-Interop registrieren“ aktivieren
3 Öffnen Sie die Datei AssemblyInfo.cs und ändern Sie [assembly: ComVisible(true)]
4 Öffnen Sie das Eingabeaufforderungstool von Visual Sutdio 2008, geben Sie guidgen.exe ein, wählen Sie DEFINE_GUID und klicken Sie auf „Neue GUID“.
5 Codes
1. Jeder Klassenname entspricht einem Schnittstellennamen. Der Schnittstellenname ist der Klassenname plus ein großes I.
2. Die in der Schnittstelle deklarierte Methode muss das Attribut [DispId(n)] verwenden.
3. Die Klasse muss einen parameterlosen Konstruktor haben
Code
Verwenden des Systems;
mit System.Collections.Generic;
mit System.Linq;
Verwenden von System.Text;
Verwenden von System.Runtime.InteropServices;
Namespace MyTestDll
{
//Die Guid hier wird in Schritt 4 generiert.
[Guid("FFA4B191-FB5B-4dd5-B7B1-B2F32BF6F1FF")]
öffentliche Schnittstelle IMyTestDll
{
[DispId(0)]
string GetAbout();
}
öffentliche Klasse Test1:IMyTestDll
{
Private String-Zusammenfassung;
publicTest1()
{
summary = „Das ist mein erster Test“;
}
öffentliche Zeichenfolge GetAbout()
{
Rücksendezusammenfassung;
}
}
}
6 Projekt generieren
ASP-Testcode
<%
Dim o
Setze o = Server.CreateObject("MyTestDll.Test1")
Response.Write o.GetAbout()
Setze o=Nichts
%>
Tipp: Wenn Sie die von uns in C# entwickelte COM-Komponente auf anderen Computern nutzen möchten, müssen Sie diese ebenfalls bei regasm registrieren.
Die Methode ist:
Kopieren Sie zunächst die Dateien im Verzeichnis binDebug auf den Zielcomputer, öffnen Sie dann das Eingabeaufforderungstool und geben Sie Folgendes ein:
regasm Das Verzeichnis/filename.dll, das Sie nach /tlb f:/dll/filename.tlb /codebase kopiert haben
Es kann auf diesem Computer ausgeführt werden.
Referenzen:
http://topic.csdn.net/u/20080625/13/0294fe91-200c-4939-b36b-c9a2c6781354.html
http://topic.csdn.net/t/20060314/15/4613620.html
http://cplus.e800.com.cn/articles/2009/211/1234338268521_3.html
http://topic.csdn.net/t/20020712/10/868557.html
http://www.itzhe.cn/news/20071123/21768.html
http://www.cnblogs.com/illele/archive/2007/10/25/937050.html
-