Bagikan melalui


-link (Visual Basic)

Menyebabkan pengkompilasi membuat informasi jenis COM dalam rakitan yang ditentukan tersedia untuk proyek yang saat ini Anda kompilasikan.

Sintaks

-link:fileList  

or

-l:fileList  

Argumen

Term Definisi
fileList Harus diisi. Daftar nama file rakitan yang dibatasi koma. Jika nama file memiliki spasi, sertakan nama dalam tanda kutip (" ").

Keterangan

Opsi -link memungkinkan Anda untuk menyebarkan aplikasi yang memiliki informasi jenis tersemat. Aplikasi kemudian dapat menggunakan jenis dalam rakitan runtime yang mengimplementasikan informasi jenis yang disematkan tanpa memerlukan referensi ke perakitan runtime. Jika berbagai versi rakitan runtime diterbitkan, aplikasi yang berisi informasi jenis yang disematkan dapat bekerja dengan berbagai versi tanpa harus dikompilasi ulang. Misanya, lihat Panduan: Menyematkan Jenis dari Rakitan Terkelola.

Menggunakan opsi -link sangat berguna ketika Anda bekerja dengan interop COM. Anda dapat menyematkan jenis COM sehingga aplikasi Anda tidak lagi memerlukan perakitan interop utama (PIA) pada komputer target. Opsi -link menginstruksikan pengkompilasi untuk menyematkan informasi jenis COM dari rakitan interop yang direferensikan ke dalam kode yang dikompilasi yang dihasilkan. Jenis COM diidentifikasi oleh nilai CLSID (GUID). Akibatnya, aplikasi Anda dapat berjalan pada komputer target yang telah menginstal jenis COM yang sama dengan nilai CLSID yang sama. Aplikasi yang mengotomatiskan Microsoft Office adalah contoh yang baik. Karena aplikasi seperti Office biasanya menyimpan nilai CLSID yang sama di berbagai versi, aplikasi Anda dapat menggunakan jenis COM yang direferensikan selama .NET Framework 4 atau yang lebih baru diinstal pada komputer target dan aplikasi Anda menggunakan metode, properti, atau peristiwa yang disertakan dalam jenis COM yang direferensikan.

Opsi -link hanya menyematkan antarmuka, struktur, dan delegasi. Menyematkan kelas COM tidak didukung.

Catatan

Saat Anda membuat instans jenis COM yang disematkan dalam kode, Anda harus membuat instans tersebut dengan menggunakan antarmuka yang sesuai. Mencoba membuat instans jenis COM yang disematkan dengan menggunakan CoClass menyebabkan kesalahan.

Untuk mengatur opsi -link di Visual Studio, tambahkan referensi rakitan dan atur properti Embed Interop Types ke benar. Default untuk properti Embed Interop Types adalah salah.

Jika Anda menautkan ke rakitan COM (Assembly A) yang dengan sendirinya mereferensikan rakitan COM lain (Assembly B), Anda juga harus menautkan ke Assembly B jika salah satu hal berikut ini benar:

  • Jenis dari Assembly A mewarisi dari jenis atau mengimplementasikan antarmuka dari Assembly B.

  • Bidang, properti, peristiwa, atau metode yang memiliki jenis pengembalian atau tipe parameter dari Perakitan B dipanggil.

Gunakan -libpath untuk menentukan direktori tempat satu atau beberapa referensi rakitan Anda berada.

Seperti opsi pengkompilasi -reference, opsi pengkompilasi -link menggunakan file respons Vbc.rsp, yang mereferensikan rakitan .NET Framework yang sering digunakan. Gunakan opsi pengkompilasi -noconfig jika Anda tidak ingin pengkompilasi menggunakan file Vbc.rsp.

Bentuk pendek dari -link adalah -l.

Jenis Generik dan Tersemat

Bagian berikut menjelaskan batasan dalam penggunaan jenis generik dalam aplikasi yang menyematkan jenis interop.

Antarmuka generik

Antarmuka generik yang disematkan dari rakitan interop tidak dapat digunakan. Hal ini ditunjukkan di contoh berikut.

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

Jenis yang Memiliki Parameter Generik

Jenis yang memiliki parameter generik yang jenisnya disematkan dari rakitan interop tidak dapat digunakan jika jenis tersebut berasal dari rakitan eksternal. Batasan ini tidak berlaku untuk antarmuka. Misalnya, pertimbangkan antarmuka Range yang ditetapkan dalam rakitan Microsoft.Office.Interop.Excel. Jika pustaka menyematkan jenis interop dari rakitan Microsoft.Office.Interop.Excel dan mengekspos metode yang mengembalikan jenis generik yang memiliki parameter yang jenisnya adalah antarmuka Range, metode tersebut harus mengembalikan antarmuka generik, seperti yang ditunjukkan dalam contoh kode berikut.

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

Dalam contoh berikut, kode klien dapat memanggil metode yang mengembalikan antarmuka generik IList tanpa kesalahan.

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

Contoh

Baris perintah berikut mengkompilasi file sumber OfficeApp.vb dan rakitan referensi dari COMData1.dll dan COMData2.dll untuk menghasilkan OfficeApp.exe.

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

Lihat juga