-link (Visual Basic)
Powoduje, że kompilator udostępnia kompilatorowi informacje o typie COM w określonych zestawach aktualnie kompilowanych.
Składnia
-link:fileList
lub
-l:fileList
Argumenty
Termin | Definicja |
---|---|
fileList |
Wymagany. Rozdzielana przecinkami lista nazw plików zestawów. Jeśli nazwa pliku zawiera spację, należy ująć nazwę w cudzysłów. |
Uwagi
Opcja -link
umożliwia wdrożenie aplikacji z osadzonymi informacjami o typie. Aplikacja może następnie używać typów w zestawie środowiska uruchomieniowego, które implementują informacje o typie osadzonym bez konieczności odwołowania się do zestawu środowiska uruchomieniowego. Jeśli opublikowano różne wersje zestawu środowiska uruchomieniowego, aplikacja zawierająca informacje o typie osadzonym może współdziałać z różnymi wersjami bez konieczności ponownego komilowania. Aby zapoznać się z przykładem, zobacz Przewodnik: osadzanie typów z zarządzanych zestawów.
-link
Użycie tej opcji jest szczególnie przydatne podczas pracy z międzyoperacją modelu COM. Typy MODELU COM można osadzić, aby aplikacja nie wymagała już podstawowego zestawu międzyoperacyjnych (PIA) na komputerze docelowym. Opcja -link
instruuje kompilator, aby osadził informacje o typie COM z zestawu międzyoperacyjnego, do wynikowego skompilowanego kodu. Typ COM jest identyfikowany przez wartość CLSID (GUID). W związku z tym aplikacja może działać na komputerze docelowym, na którym zainstalowano te same typy COM z tymi samymi wartościami CLSID. Dobrym przykładem są aplikacje automatyzujące pakiet Microsoft Office. Ponieważ aplikacje takie jak pakiet Office zwykle zachowują tę samą wartość CLSID w różnych wersjach, aplikacja może używać przywoływanego typu COM, o ile program .NET Framework 4 lub nowszy jest instalowany na komputerze docelowym, a aplikacja używa metod, właściwości lub zdarzeń uwzględnionych w przywoływane typy COM.
Opcja -link
osadza tylko interfejsy, struktury i delegaty. Osadzanie klas COM nie jest obsługiwane.
Uwaga
Podczas tworzenia wystąpienia osadzonego typu COM w kodzie należy utworzyć wystąpienie przy użyciu odpowiedniego interfejsu. Próba utworzenia wystąpienia osadzonego typu COM przy użyciu klasy CoClass powoduje błąd.
Aby ustawić -link
opcję w programie Visual Studio, dodaj odwołanie do zestawu i ustaw Embed Interop Types
właściwość na true. Wartość domyślna Embed Interop Types
dla właściwości to false.
Jeśli łączysz się z zestawem COM (Zestaw A), który odwołuje się do innego zestawu COM (Zestaw B), musisz również połączyć się z zestawem B, jeśli którykolwiek z następujących elementów jest spełniony:
Typ z zestawu A dziedziczy po typie lub implementuje interfejs z zestawu B.
Wywoływana jest pole, właściwość, zdarzenie lub metoda, która ma zwracany typ lub typ parametru z zestawu B.
Użyj -libpath , aby określić katalog, w którym znajduje się co najmniej jeden z odwołań do zestawu.
Podobnie jak opcja kompilatora -reference , -link
opcja kompilatora używa pliku odpowiedzi Vbc.rsp, który odwołuje się do często używanych zestawów programu .NET Framework. Użyj opcji kompilatora -noconfig , jeśli kompilator nie ma używać pliku Vbc.rsp.
Krótka forma to -link
-l
.
Typy ogólne i osadzone
W poniższych sekcjach opisano ograniczenia dotyczące używania typów ogólnych w aplikacjach, które osadzają typy międzyoperacyjności.
Interfejsy ogólne
Nie można używać interfejsów ogólnych osadzonych z zestawu międzyoperacyjnego. Jest to pokazane w następującym przykładzie.
' The following code causes an error if ISampleInterface is an embedded interop type.
Dim sample As ISampleInterface(Of SampleType)
Typy, które mają parametry ogólne
Typy, które mają parametr ogólny, którego typ jest osadzony z zestawu międzyoperacyjnego, nie mogą być używane, jeśli ten typ pochodzi z zestawu zewnętrznego. To ograniczenie nie ma zastosowania do interfejsów. Rozważmy na przykład Range interfejs zdefiniowany w Microsoft.Office.Interop.Excel zestawie. Jeśli biblioteka osadza typy międzyoperacyjności z Microsoft.Office.Interop.Excel zestawu i uwidacznia metodę zwracającą typ ogólny, który ma parametr, którego typem jest Range interfejs, ta metoda musi zwrócić interfejs ogólny, jak pokazano w poniższym przykładzie kodu.
Imports System.Collections.Generic
Imports Microsoft.Office.Interop.Excel
Class Utility
' The following code causes an error when called by a client assembly.
Public Function GetRange1() As List(Of Range)
End Function
' The following code is valid for calls from a client assembly.
Public Function GetRange2() As IList(Of Range)
End Function
End Class
W poniższym przykładzie kod klienta może wywołać metodę zwracającą IList interfejs ogólny bez błędu.
Module Client
Public Sub Main()
Dim util As New Utility()
' The following code causes an error.
Dim rangeList1 As List(Of Range) = util.GetRange1()
' The following code is valid.
Dim rangeList2 As List(Of Range) = CType(util.GetRange2(), List(Of Range))
End Sub
End Module
Przykład
Poniższy wiersz polecenia kompiluje plik OfficeApp.vb
źródłowy i zestawy odwołań z COMData1.dll
i COMData2.dll
do tworzenia OfficeApp.exe
.
vbc -link:COMData1.dll,COMData2.dll -out:OfficeApp.exe OfficeApp.vb