-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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: