Udostępnij za pośrednictwem


-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  

Zobacz też