Megosztás a következőn keresztül:


-link (Visual Basic)

Emiatt a fordító elérhetővé teszi a COM-típusadatokat a megadott szerelvényekben az éppen összeállított projekt számára.

Syntax

-link:fileList  

vagy

-l:fileList  

Argumentumok

Időszak Definíció
fileList Szükséges. Vesszővel tagolt szerelvényfájlnevek listája. Ha a fájlnév szóközt tartalmaz, a nevet idézőjelek közé kell foglalnia.

Megjegyzések

Ezzel a -link beállítással beágyazott típusinformációkat tartalmazó alkalmazást helyezhet üzembe. Az alkalmazás ezután olyan futtatókörnyezeti szerelvényben is használhat típusokat, amelyek a beágyazott típusinformációkat implementálják anélkül, hogy hivatkozni kellene a futtatókörnyezet-szerelvényre. Ha a futtatókörnyezet-szerelvény különböző verzióit közzéteszik, a beágyazott típusinformációkat tartalmazó alkalmazás újrafordítás nélkül együttműködhet a különböző verziókkal. Példa: Útmutató: Típusok beágyazása felügyelt szerelvényekből.

-link A beállítás különösen akkor hasznos, ha com-interop-ot használ. COM-típusokat ágyazhat be, így az alkalmazásnak már nincs szüksége elsődleges interop szerelvényre (PIA) a célszámítógépen. A -link beállítás arra utasítja a fordítót, hogy ágyazza be a COM-típusadatokat a hivatkozott interop szerelvényből az eredményül kapott lefordított kódba. A COM-típust a CLSID (GUID) érték azonosítja. Ennek eredményeképpen az alkalmazás futtatható olyan célszámítógépen, amely ugyanazokat a COM-típusokat telepítette ugyanazokkal a CLSID-értékekkel. A Microsoft Office-t automatizáló alkalmazások jó példa erre. Mivel az Office-hoz hasonló alkalmazások általában ugyanazt a CLSID-értéket tartják meg különböző verziókban, az alkalmazás használhatja a hivatkozott COM-típusokat mindaddig, amíg .NET-keretrendszer 4 vagy újabb verzió van telepítve a célszámítógépre, és az alkalmazás a hivatkozott COM-típusokban szereplő metódusokat, tulajdonságokat vagy eseményeket használja.

A -link beállítás csak illesztőket, struktúrákat és meghatalmazottakat ágyaz be. A COM-osztályok beágyazása nem támogatott.

Feljegyzés

Ha beágyazott COM-típusú példányt hoz létre a kódban, a példányt a megfelelő felületen kell létrehoznia. Ha egy beágyazott COM-típuspéldányt próbál létrehozni a CoClass használatával, az hibát okoz.

A Visual Studióban a -link beállítás beállításához adjon hozzá egy szerelvényhivatkozást, és állítsa a Embed Interop Types tulajdonság értékét igazra. A tulajdonság alapértelmezett értéke Embed Interop Types hamis.

Ha egy com-szerelvényre (A szerelvényre) hivatkozik, amely maga egy másik COM-szerelvényre (B szerelvényre) hivatkozik, akkor a B szerelvényre is hivatkoznia kell, ha az alábbiak valamelyike igaz:

  • Az A szerelvényből származó típus örököl egy típust, vagy a B szerelvényből implementál egy interfészt.

  • A rendszer meghív egy olyan mezőt, tulajdonságot, eseményt vagy metódust, amelynek visszatérési típusa vagy paramétertípusa a B szerelvényből származik.

A -libpath használatával megadhatja azt a könyvtárat, amelyben egy vagy több szerelvényhivatkozás található.

A -reference compiler beállításhoz hasonlóan a -link fordító a Vbc.rsp válaszfájlt használja, amely a gyakran használt .NET-keretrendszer szerelvényekre hivatkozik. Ha nem szeretné, hogy a fordító a Vbc.rsp fájlt használja, használja a -noconfig fordítót.

A rövid formája -link az .-l

Általános és beágyazott típusok

Az alábbi szakaszok ismertetik az általános típusok használatának korlátozásait az olyan alkalmazásokban, amelyek beágyaznak az interop típusokba.

Általános felületek

Az interop szerelvényből beágyazott általános illesztők nem használhatók. Ez az alábbi példában látható.

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

Általános paraméterekkel rendelkező típusok

Az olyan általános paraméterrel rendelkező típusok, amelyek típusa egy interop szerelvényből van beágyazva, nem használhatók, ha ez a típus külső szerelvényből származik. Ez a korlátozás nem vonatkozik a felületekre. Vegyük például a Range szerelvényben Microsoft.Office.Interop.Excel definiált felületet. Ha egy kódtár beágyazza az illesztőtípusokat a Microsoft.Office.Interop.Excel szerelvényből, és olyan metódust tesz elérhetővé, amely egy olyan általános típust ad vissza, amelynek a típusa az Range interfész, a metódusnak egy általános felületet kell visszaadnia, ahogyan az a következő kódpéldában látható.

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

Az alábbi példában az ügyfélkód meghívhatja azt a metódust, amely hiba nélkül adja vissza az IList általános felületet.

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élda

Az alábbi parancssor forrásfájlokat OfficeApp.vb és referencia-szerelvényeket fordít le a forrásfájlból COMData1.dll és COMData2.dll a fordításhoz OfficeApp.exe.

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

Lásd még