-link (Visual Basic)
Derleyicinin, şu anda derlediğiniz projede belirtilen derlemelerdeki COM tür bilgilerini kullanılabilir hale getirmesine neden olur.
Sözdizimi
-link:fileList
veya
-l:fileList
Bağımsız değişkenler
Süre | Tanım |
---|---|
fileList |
Gerekli. Derleme dosya adlarının virgülle ayrılmış listesi. Dosya adında boşluk varsa, adı tırnak içine alın. |
Açıklamalar
seçeneği, -link
ekli tür bilgilerine sahip bir uygulama dağıtmanıza olanak tanır. Uygulama daha sonra, çalışma zamanı derlemesine başvuru gerektirmeden katıştırılmış tür bilgilerini uygulayan bir çalışma zamanı derlemesindeki türleri kullanabilir. Çalışma zamanı derlemesinin çeşitli sürümleri yayımlanırsa, katıştırılmış tür bilgilerini içeren uygulama, yeniden derlenmek zorunda kalmadan çeşitli sürümlerle çalışabilir. Örnek için bkz . İzlenecek Yol: Yönetilen Derlemelerden Türleri Ekleme.
bu seçeneğin -link
kullanılması özellikle COM birlikte çalışmasıyla çalışırken kullanışlıdır. Uygulamanızın artık hedef bilgisayarda birincil birlikte çalışma derlemesi (PIA) gerektirmemesi için COM türlerini ekleyebilirsiniz. -link
seçeneği, derleyiciye başvuruda bulunılan birlikte çalışma derlemesindeki COM türü bilgilerini sonuçta elde edilen derlenmiş koda eklemesini sağlar. COM türü CLSID (GUID) değeriyle tanımlanır. Sonuç olarak, uygulamanız aynı CLSID değerlerine sahip aynı COM türlerini yüklemiş bir hedef bilgisayarda çalıştırılabilir. Microsoft Office'i otomatik hale getiren uygulamalar iyi bir örnek olabilir. Office gibi uygulamalar genellikle farklı sürümlerde aynı CLSID değerini tuttuğundan, uygulamanız hedef bilgisayarda .NET Framework 4 veya üzeri yüklü olduğu ve uygulamanız başvurulan COM türlerine dahil edilen yöntemleri, özellikleri veya olayları kullandığı sürece başvurulan COM türlerini kullanabilir.
-link
seçeneği yalnızca arabirimleri, yapıları ve temsilcileri ekler. COM sınıflarının katıştırılması desteklenmez.
Not
Kodunuzda eklenmiş bir COM türünün örneğini oluşturduğunuzda, uygun arabirimi kullanarak örneği oluşturmanız gerekir. CoClass kullanarak katıştırılmış com türünün bir örneğini oluşturmaya çalışmak bir hataya neden olur.
Visual Studio'da seçeneği ayarlamak -link
için bir derleme başvurusu ekleyin ve özelliğini true olarak ayarlayınEmbed Interop Types
. özelliği için Embed Interop Types
varsayılan değer false'tur.
Başka bir COM derlemesine (Derleme B) başvuran bir COM derlemesine (Derleme A) bağlanırsanız, aşağıdakilerden biri doğruysa B Derlemesine de bağlanmanız gerekir:
Derleme A'dan bir tür, bir türden devralır veya B Derlemesinden bir arabirim uygular.
B Derlemesinden dönüş türüne veya parametre türüne sahip bir alan, özellik, olay veya yöntem çağrılır.
Derleme başvurularınızdan birinin veya daha fazlasının bulunduğu dizini belirtmek için -libpath kullanın.
-reference derleyici seçeneği gibi, -link
derleyici seçeneği de sık kullanılan .NET Framework derlemelerine başvuran Vbc.rsp yanıt dosyasını kullanır. Derleyicinin Vbc.rsp dosyasını kullanmasını istemiyorsanız -noconfig derleyicisi seçeneğini kullanın.
kısa biçimi -link
şeklindedir -l
.
Genel Türler ve Katıştırılmış Türler
Aşağıdaki bölümlerde, birlikte çalışma türlerini ekleyen uygulamalarda genel türleri kullanma sınırlamaları açıklanmaktadır.
Genel Arabirimler
Birlikte çalışma derlemesinden katıştırılmış genel arabirimler kullanılamaz. Bu, aşağıdaki örnekte gösterilir.
' The following code causes an error if ISampleInterface is an embedded interop type.
Dim sample As ISampleInterface(Of SampleType)
Genel Parametreleri Olan Türler
Türü birlikte çalışma derlemesinden eklenmiş olan genel parametreye sahip türler, bu tür bir dış derlemeden geliyorsa kullanılamaz. Bu kısıtlama arabirimler için geçerli değildir. Örneğin, derlemede RangeMicrosoft.Office.Interop.Excel tanımlanan arabirimi göz önünde bulundurun. Kitaplık birlikte çalışma türlerini derlemeden Microsoft.Office.Interop.Excel eklerse ve türü arabirim olan bir parametresi Range olan genel bir tür döndüren bir yöntemi kullanıma sunarsa, bu yöntemin aşağıdaki kod örneğinde gösterildiği gibi genel bir arabirim döndürmesi gerekir.
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
Aşağıdaki örnekte istemci kodu, genel arabirimi hatasız döndüren IList yöntemini çağırabilir.
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
Örnek
Aşağıdaki komut satırı, ve kaynak dosyasını OfficeApp.vb
ve başvuru derlemelerini COMData1.dll
COMData2.dll
derleyip oluşturur OfficeApp.exe
.
vbc -link:COMData1.dll,COMData2.dll -out:OfficeApp.exe OfficeApp.vb