Aracılığıyla paylaş


Visual C++ Derleyici Seçenekleri

Derlemenin belirtilmiş derlemelerdeki COM türü bilgilerini şu anda derlediğiniz projede kullanılabilir hale getirmesine neden olur.

/link:fileList
// -or-
/l:fileList

Bağımsız Değişkenler

  • fileList
    Gerekli. Derleme dosya adlarının virgülle ayrılmış listesi. Dosya adı boşluk içeriyorsa, adı tırnak içine alın.

Açıklamalar

/link seçeneği katıştırılmış türde bilgi içeren bir uygulamayı dağıtabilmenizi sağlar. Uygulama daha sonra, çalışma zamanı derlemesine bir başvuruya gerek duymadan, katıştırılmış tür veriyi uygulayan bir çalışma zamanı derlemesindeki türleri kullanabilir. Çeşitli çalışma zamanı derleme sürümleri yayımladıysanız, gömülü tür bilgileri içeren uygulama yeniden derlenmeye gerek duymadan farklı versiyonlarla çalışabilir. Bir örnek için bkz. Walkthrough: Embedding Types from Managed Assemblies.

COM birlikte çalışabilirliğiyle çalışıyorsanız /link seçeneği özellikle kullanışlıdır. Uygulamanızın artık hedef bilgisayarda birincil birlikte çalışma derlemesi (PIA) gerektirmemesi için COM türlerini katıştırabilirsiniz. /link, derleyiciye başvurulan birlikte çalışma derlemesindeki COM türünde bilgileri sonuçta oluşan derlenmiş koda katıştırması talimatını verir. COM türü, CLSID (GUID) değeri tarafından tanımlanır. Bunun sonucunda, uygulamanız aynı CLSID değerlerine sahip aynı COM türlerini yüklemiş olan hedef bir bilgisayarda çalışabilir. Microsoft Office'i otomatikleştiren uygulamalar iyi bir örnektir. Office gibi uygulamalar genellikle farklı sürümler boyunca aynı CLSID değerlerini korudukları için, .NET Framework 4 ya da sonrası hedef bilgisayarda yüklü olduğu ve uygulamanız başvurulan COM tiplerine dahil yöntemleri, özellikleri veya olayları kullandığı sürece uygulamanız başvurulan COM türlerini kullanabilir.

/link seçeneği yalnızca arabirimleri, yapıları ve temsilcileri katıştırır. COM sınıflarının katıştırılması desteklenmiyor.

Not

Kodunuzda bir katışık COM türü örneği oluştururken, örneği uygun arabirimi kullanarak oluşturmanız gerekir. CoClass öğesini kullanarak katıştırılmış COM türünün bir örneğini oluşturmaya çalışmak, bir derleyici hatasına neden olur.

Visual Studio öğesindeki /link seçeneğini ayarlamak için bir derleme başvurusu ekleyin ve Embed Interop Types özelliğini true olarak ayarlayın. Embed Interop Types özelliği için varsayılan yanlış'tır.

Başka bir COM derlemesine (B Derlemesi) başvuran bir COM derlemesine (A Derlemesi) bağlantı verirseniz, aşağıdakilerden herhangi biri doğruysa B Derlemesine bağlantı vermeniz gerekir.

  • Derleme A'daki bir tür, bir türden devralır veya Derleme B'deki bir arabirimi uygular.

  • B Derlemesinden bir dönüş türüne veya parametre türüne sahip alan, özellik, olay veya yöntem çağrılır.

/reference derleme seçeneği gibi, /link derleme seçeneği de sık sık kullanılan .NET Framework derlemelerine başvuran Csc.rsp yanıt dosyasını kullanır. Derleyicinin Csc.rsp dosyasını kullanmasını istemiyorsanız /noconfig derleyici seçeneğini kullanın.

/link öğesinin kısa biçimi /l öğesidir.

Genel ve Katıştırılmış Türler

Aşağıdaki bölümler birlikte çalışma tiplerini katan uygulamalarda genel türleri kullanmadaki sınırlamaları açıklar.

Genel Arabirimler

Bir 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.
ISampleInterface<SampleType> sample;

Genel Parametrelere Sahip Türler

O tür, bir dış derlemedense birlikte çalışan bir derlemeden katıştırılmış genel bir parametreye sahip olan türler kullanılamaz. Bu kısıtlama arayüzlerde geçerli değildir. Örneğin, Microsoft.Office.Interop.Excel derlemesi üzerinde tanımlanmış olan, Range arabirimini ele alın. Bir kitaplık Microsoft.Office.Interop.Excel derlemesinden Interop tiplerini katıştırırsa ve türü Range arabirimi olan bir parametreye sahip olan bir genel tür döndüren bir yöntemi sunarsa, bu yöntem aşağıdaki kod örneğinde gösterildiği gibi bir genel arabirim döndürmelidir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;

public class Utility
{
    // The following code causes an error when called by a client assembly.
    public List<Range> GetRange1() {


...


}

// The following code is valid for calls from a client assembly.
public IList<Range> GetRange2() {


...


    }
}

Aşağıdaki örnekte, istemci kodu IList genel arabirimini hatasız olarak döndüren yöntemi çağırabilir.

public class Client
{
    public void Main()
    {
        Utility util = new Utility();

        // The following code causes an error.
        List<Range> rangeList1 = util.GetRange1();

        // The following code is valid.
        List<Range> rangeList2 = (List<Range>)util.GetRange2();
    }
}

Örnek

Aşağıdaki kod OfficeApp.exe üretmek için COMData1.dll ve COMData2.dll öğelerinden kaynak dosyası OfficeApp.cs ve başvuru derler.

csc /link:COMData1.dll,COMData2.dll /out:OfficeApp.exe OfficeApp.cs

Ayrıca bkz.

Görevler

Walkthrough: Embedding Types from Managed Assemblies

Başvuru

/reference (C# Derleyici Seçenekleri)

/noconfig (C# Derleyici Seçenekleri)

Birlikte çalışabilirlik genel bakış (C# programlama Kılavuzu)

Kavramlar

csc.exe Kullanarak Komut Satırı Oluşturma

Diğer Kaynaklar

C# Derleme Seçenekleri