W tym artykule opisano sposób korzystania z programu
Microsoft Visual Basic .NET lub Microsoft Visual Basic 2005 w celu
skonstruowania zarządzanego zestawu, który będzie można wywoływać z programu
Microsoft Visual Basic 6.0.
Wskazówki dotyczące udostępniania typów .NET aplikacjom modelu COM
Aby uwidocznić typy zestawu systemu Microsoft .NET aplikacjom
modelu COM (Component Object Model), podczas projektowania zestawu należy
uwzględnić następujące wymagania międzyoperacyjne modelu COM. Typy zarządzane (
class,
interface,
struct,
enum i inne) doskonale współdziałają z aplikacjami klienckimi modelu
COM, jeśli przestrzega się następujących zasad:
- Zdefiniowane interfejsy należy implementować w klasach w
sposób jawny. Zestaw międzyoperacyjny modelu COM udostępnia mechanizm
automatycznego generowania interfejsu zawierającego wszystkie składowe klasy i
składowe jego klasy podstawowej. Najlepiej jest jednak uwidocznić jawne
interfejsy i zaimplementować je w sposób jawny.
- Wszystkie typy zarządzane, które mają być udostępnione
modelowi COM, należy deklarować jako typy publiczne. Tylko typy publiczne
zestawu są rejestrowane i eksportowane do biblioteki typów. W związku z tym
tylko typy publiczne są widoczne w modelu COM.
- Wszystkie składowe typów (metody, właściwości, pola i
zdarzenia), które mają być udostępnione modelowi COM, należy deklarować jako
publiczne. Składowe typów publicznych muszą być także publiczne, aby były
widoczne w modelu COM. Domyślnie widoczne są wszystkie typy i składowe
publiczne. Aby ukryć typ lub składową typu sterowania lub widoczność składowej
w aplikacjach klienckich modelu COM, można użyć atrybutu ComVisibleAttribute.
- Typy, których wystąpienie będzie tworzone przez model COM,
muszą mieć domyślnego konstruktora publicznego. Zarządzane typy publiczne są
widoczne w modelu COM. Jeśli jednak brakuje domyślnego konstruktora publicznego
(konstruktora bez argumentów), klienci modelu COM nie mogą utworzyć wystąpienia
typu. Mimo to mogą używać typu, jeśli jego wystąpienie zostanie utworzone w
inny sposób, a następnie zwrócone do klienta modelu COM. Jest możliwe
dołączenie przeładowanych konstruktorów, którzy akceptują różne argumenty dla
tych typów. Konstruktorzy akceptujący argumenty mogą być jednak wywoływani
tylko z kodu zarządzanego (.NET).
- Typy abstrakcyjne są niedostępne. Wystąpień typów
abstrakcyjnych nie mogą tworzyć ani klienci modelu COM, ani klienci systemu
.NET.
- Użyj szablonu COMClass w programie Visual Basic .NET lub Visual Basic 2005. Podczas
dodawania nowej klasy, która będzie udostępniana aplikacjom modelu COM należy
rozważyć użycie szablonu COMClass, który jest dostarczany z programem Visual Basic .NET lub Visual
Basic 2005. Szablon COMClass tworzy klasę zawierającą atrybut COMClassAttribute i generuje identyfikatory GUID dla identyfikatora klasy (CLSID),
identyfikatora interfejsu i identyfikatora zdarzenia, które są udostępniane
przez dany typ. Szablon COMClass tworzy również konstruktora publicznego bez parametrów. To
najprostszy sposób utworzenia nowej klasy, która jest zgodna z zasadami
tworzenia typów wywołalnych z modelu COM.
Rejestrowanie zestawu .NET spełniającego wymagania międzyoperacyjne modelu COM i utworzenie biblioteki typów
Warunkiem skutecznej interakcji programu Visual Basic 6.0 z
zarządzanym składnikiem jest zarejestrowanie zestawu spełniającego wymagania
międzyoperacyjne modelu COM i wygenerowanie biblioteki typów. Rejestracja ta
musi zostać wykonana na każdym komputerze, na którym zachodzi interakcja między
aplikacją kliencką modelu COM a zestawem. Z biblioteki typów aplikacje
klienckie modelu COM mogą czerpać informacje o typach udostępnionych w
zestawie. Proces, jak należy to robić, zależy od tego, czy pracuje się na
komputerze projektowym czy docelowym.
Na komputerze projektowym
program Microsoft Visual Studio .NET lub Microsoft Visual Studio 2005
automatycznie tworzy i rejestruje bibliotekę typów w trakcie procesu
kompilacji, jeśli w obszarze właściwości
Configuration procesu jest zaznaczone pole wyboru
Register for COM
Interop. Jeśli klasa została utworzona przy użyciu szablonu
COMClass, program Visual Studio .NET lub Visual Studio 2005 automatycznie
zaznacza pole wyboru
Register for COM Interop. Aby
zweryfikować, że pole wyboru
Register for COM Interop jest
zaznaczone w programie Visual Studio .NET lub Visual Studio 2005, wykonaj
następujące kroki:
- Uruchom program Visual Studio .NET lub Visual Studio
2005.
- Otwórz rozwiązanie zawierające kompilowany projekt, który
ma spełniać wymagania międzyoperacyjne modelu COM.
- W menu View (Widok) kliknij polecenie
Solution Explorer.
- W oknie Solution Explorer kliknij prawym przyciskiem myszy
projekt, który chcesz skompilować, tak aby spełniał wymagania międzyoperacyjne
modelu COM, a następnie kliknij polecenie Properties
(Właściwości).
- Kliknij węzeł Configuration Properties
(Właściwości konfiguracji), a następnie kliknij węzeł
Build.
Uwaga: W programie Visual Studio 2005 kliknij pozycję
Compile (Skompiluj) w lewym okienku. - Kliknij pole wyboru Register for COM
Interop, aby je zaznaczyć. Opcja ta jest aktywna tylko w projektach
bibliotek klas.
- Kliknij przycisk OK, aby zamknąć okno
dialogowe Property Pages (Strony właściwości).
Jeśli program Visual Studio .NET lub Visual Studio 2005 nie jest
zainstalowany lub musisz ręcznie wygenerować i zarejestrować plik biblioteki
typów (tlb) dla zarządzanego zestawu, użyj narzędzia Assembly Registration
(RegAsm.exe) z przełącznikiem
/TLB. Jeśli zarządzany zestaw jest zestawem prywatnym i zamierzasz
umieścić zarządzany zestaw w innym folderze niż proces hosta (EXE), należy
również użyć przełącznika
/Codebase.
Zestaw prywatny jest rozmieszczany razem z aplikacją i
może być wykorzystywany wyłącznie przez tę aplikację. Inne aplikacje nie mogą
współużytkować zestawu prywatnego. Zestawy prywatne są przeznaczone do
instalowania w tym samym folderze co proces hosta (EXE). W przypadku aplikacji
klienckiej modelu COM oznacza to, że zestaw znajduje się w tym samym folderze
co aplikacja. Zestaw udostępniony może być używany przez wiele aplikacji na
komputerze. Aby utworzyć zestaw udostępniony, musisz podpisać go silną nazwą i
zainstalować w buforze GAC (Global Assembly Cache) na komputerze docelowym.
Aby uzyskać więcej informacji dotyczących podpisywania zestawu silną
nazwą i instalowania go w buforze GAC (Global Assembly Cache), odwiedź
następującą witrynę firmy Microsoft w sieci Web:
Podczas rejestrowania zestawu należy użyć zarówno przełącznika
/tlb:, jak i
/Codebase. Przełącznik
/tlb: generuje i rejestruje bibliotekę typów, a przełącznik
/Codebase rejestruje lokalizację zestawu zarządzanego w rejestrze systemu
Windows. Jeśli przełącznik
/Codebase nie zostanie użyty i zestaw nie zostanie zainstalowany w buforze
Global Assembly Cache (GAC), należy umieścić kopię zestawu w folderach
wszystkich aplikacji klienckich modelu COM (EXE), aby umożliwić lokalizację
zestawu przez aparat plików wykonywalnych języka wspólnego (CLR).
Aby
wygenerować i zarejestrować bibliotekę typów i zarejestrować lokalizację
zestawu zarządzanego, wpisz następujące polecenie w wierszu polecenia:
Regasm nazwa_zestawu.dll /tlb: nazwa_pliku.tlb /codebase
Tworzenie zestawu wywoływalnego przez model COM w programie Visual Basic .NET
- Uruchom program Visual Studio .NET lub Visual Studio 2005.
- W menu File (Plik) wskaż polecenie
New (Nowy) a następnie kliknij pozycję
Project (Projekt).
- W obszarze Project Types (Typy projektów)
kliknij opcję Visual Basic Projects.
Uwaga: W programie Visual Studio 2005 kliknij pozycję Visual
Basic w obszarze Project Types (Typy
projektów). - W obszarze Templates (Szablony) kliknij
opcję Class Library.
- Nadaj projektowi nazwę TestProj, a następnie kliknij
przycisk OK.
Domyślnie zostanie utworzona klasa
Class1. - W menu View (Widok) kliknij polecenie
Solution Explorer.
- Kliknij prawym przyciskiem myszy pozycję
Class1.vb, a następnie kliknij polecenie
Delete (Usuń). Kliknij przycisk OK, aby
potwierdzić polecenie usunięcia pliku źródłowego Class1.vb.
- W menu Project (Projekt) kliknij polecenie
Add Class (Dodaj klasę).
- W obszarze Templates (Szablony) kliknij
opcję COM Class (Klasa COM).
- Nadaj klasie nazwę COMClass1.vb, a następnie kliknij
przycisk Open (Otwórz).
Klasa COMClass1 zostanie
utworzona z następującym kodem. <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1
#Region "COM GUIDs"
' Te identyfikatory GUID określają tożsamość modelu COM dla tej klasy
' i jego interfejsów COM. Jeśli je zmienisz, istniejący
' klienci utracą możliwość dostępu do klasy.
Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
#End Region
' Możliwa do utworzenia klasa COM musi mieć instrukcję Public Sub New()
' bez parametrów. W przeciwnym razie klasa nie będzie
' zarejestrowana w rejestrze COM i nie będzie jej można utworzyć
' poleceniem CreateObject.
Public Sub New()
MyBase.New()
End Sub
End Class - Dodaj następującą funkcję do klasy COMClass1:
Public Function myFunction() As Integer
Return 100
End Function - W oknie Solution Explorer kliknij prawym przyciskiem myszy
projekt nazwa_projektu, a następnie
kliknij polecenie Properties.
- W obszarze Configuration Properties
kliknij przycisk Build.
- Zweryfikuj, czy jest zaznaczone pole wyboru
Register for COM Interop, a następnie kliknij przycisk
OK.
- W menu Build kliknij polecenie
Build Solution, aby skompilować projekt.
- Uruchom program Visual Basic 6.0.
- W menu File kliknij polecenie New
Project, a następnie kliknij, aby wybrać opcję Standard
EXE w oknie dialogowym New Project.
Zostanie
utworzony formularz o domyślnej nazwie Form1. - W menu Project kliknij polecenie
References.
- Na liście Available References (Dostępne
odwołania) kliknij dwukrotnie pozycję TestProj, aby ją
zaznaczyć, a następnie kliknij przycisk OK.
- Dodaj do formularza przycisk polecenia.
- Kliknij dwukrotnie przycisk Command1, aby
otworzyć okno kodu.
- Do zdarzenia Command1_Click dodaj następujący kod.
Dim myObject As TestProj.COMClass1
Set myObject = New TestProj.COMClass1
MsgBox myObject.myFunction
- W menu Run kliknij polecenie
Start.
- Kliknij przycisk polecenia.
Powinien pojawić się
komunikat wyświetlający liczbę 100.
Aby uzyskać więcej informacji, odwiedź następującą witrynę
firmy Microsoft w sieci Web:
Numer ID artykułu: 817248 - Ostatnia weryfikacja: 3 grudnia 2007 - Weryfikacja: 6.8
Informacje zawarte w tym artykule dotyczą:
- Microsoft Visual Basic 2005
- Microsoft Visual Basic .NET 2003 Standard Edition
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Visual Basic 6.0 Enterprise Edition
- Microsoft Visual Basic 6.0 Learning Edition
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft .NET Framework 2.0
- Microsoft .NET Framework 1.1
- Microsoft .NET Framework 1.0
| kbhowtomaster kbinterop kbnamespace kbdll kbautomation kbcominterop kbvs2005applies kbvs2005swept KB817248 |