Sdílet prostřednictvím


-link (Visual Basic)

Způsobí, že kompilátor zpřístupní informace o typu MODELU COM v zadaných sestaveních pro projekt, který právě kompilujete.

Syntaxe

-link:fileList  

nebo

-l:fileList  

Argumenty

Pojem definice
fileList Povinný: Seznam názvů souborů sestavení oddělených čárkami Pokud název souboru obsahuje mezeru, uzavřete ho do uvozovek.

Poznámky

Tato -link možnost umožňuje nasadit aplikaci s vloženými informacemi o typu. Aplikace pak může používat typy v sestavení modulu runtime, které implementují vložené informace o typu, aniž by vyžadovala odkaz na sestavení runtime. Pokud jsou publikovány různé verze sestavení modulu runtime, aplikace, která obsahuje informace o vloženém typu, může pracovat s různými verzemi, aniž by bylo nutné překompilovat. Příklad najdete v části Návod: Vkládání typů ze spravovaných sestavení.

Použití této -link možnosti je zvlášť užitečné, když pracujete s interoperabilitou modelu COM. Typy modelu COM můžete vložit tak, aby vaše aplikace už na cílovém počítači nepoužíla primární sestavení interop (PIA). Tato -link možnost dává kompilátoru pokyn, aby do výsledného kompilovaného kódu vložil informace o typu modelu COM z odkazovaného sestavení vzájemné spolupráce. Typ MODELU COM je identifikován hodnotou CLSID (GUID). V důsledku toho může vaše aplikace běžet na cílovém počítači, který nainstaloval stejné typy modelu COM se stejnými hodnotami CLSID. Dobrým příkladem jsou aplikace, které automatizují systém Microsoft Office. Vzhledem k tomu, že aplikace, jako je Office, obvykle udržují stejnou hodnotu CLSID v různých verzích, může vaše aplikace používat odkazované typy modelu COM, pokud je v cílovém počítači nainstalovaná rozhraní .NET Framework 4 nebo novější a vaše aplikace používá metody, vlastnosti nebo události, které jsou zahrnuté v odkazovaných typech modelu COM.

Možnost -link vloží jenom rozhraní, struktury a delegáty. Vkládání tříd modelu COM se nepodporuje.

Poznámka:

Když ve svém kódu vytvoříte instanci vloženého typu MODELU COM, musíte instanci vytvořit pomocí příslušného rozhraní. Pokus o vytvoření instance vloženého typu MODELU COM pomocí třídy CoClass způsobí chybu.

Pokud chcete nastavit možnost v sadě -link Visual Studio, přidejte odkaz na sestavení a nastavte Embed Interop Types vlastnost na true. Výchozí hodnota vlastnosti Embed Interop Types je false.

Pokud propojíte sestavení MODELU COM (sestavení A), které samotné odkazuje na jiné sestavení MODELU COM (sestavení B), musíte také propojit sestavení B, pokud je splněna některé z následujících skutečností:

  • Typ ze sestavení A dědí z typu nebo implementuje rozhraní ze sestavení B.

  • Vyvolá se pole, vlastnost, událost nebo metoda s návratovým typem nebo typem parametru ze sestavení B.

Pomocí parametru -libpath určete adresář, ve kterém se nachází jeden nebo více odkazů na sestavení.

Podobně jako možnost -link kompilátoru -reference používá možnost kompilátoru soubor odpovědi Vbc.rsp, který odkazuje na často používaná sestavení rozhraní .NET Framework. Pokud nechcete, aby kompilátor používal soubor Vbc.rsp, použijte možnost kompilátoru -noconfig.

Krátká forma -link je -l.

Obecné typy a vložené typy

Následující části popisují omezení používání obecných typů v aplikacích, které vkládají typy vzájemné spolupráce.

Obecná rozhraní

Obecná rozhraní vložená ze sestavení vzájemné spolupráce nelze použít. To je ukázáno v následujícím příkladu.

' The following code causes an error if ISampleInterface is an embedded interop type.
Dim sample As ISampleInterface(Of SampleType)

Typy s obecnými parametry

Typy, které mají obecný parametr, jehož typ je vložen z sestavení vzájemné spolupráce, nelze použít, pokud je tento typ z externího sestavení. Toto omezení neplatí pro rozhraní. Představte si Range například rozhraní, které je definováno Microsoft.Office.Interop.Excel v sestavení. Pokud knihovna vkládá typy Microsoft.Office.Interop.Excel z sestavení a zveřejňuje metodu, která vrací obecný typ, který má parametr, jehož typ je Range rozhraní, musí tato metoda vrátit obecné rozhraní, jak je znázorněno v následujícím příkladu kódu.

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

V následujícím příkladu může kód klienta volat metodu, která vrací IList obecné rozhraní bez chyby.

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

Příklad

Následující příkazový řádek zkompiluje zdrojový soubor OfficeApp.vb a referenční sestavení z COMData1.dll a COMData2.dll vytváří OfficeApp.exe.

vbc -link:COMData1.dll,COMData2.dll -out:OfficeApp.exe OfficeApp.vb  

Viz také