/link (opcje kompilatora C#)

Powoduje, że kompilator udostępnia informacje o typie COM określonych zestawów do projektu, które są obecnie kompilacji.

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

Argumenty

  • fileList
    Wymagane.Rozdzielany przecinkami listę nazw plików zestawu.Jeśli w nazwie pliku znajdują się spacje, należy nazwę ująć w cudzysłów.

Uwagi

/link Opcja umożliwia wdrażanie aplikacji, która zawiera osadzone informacje o typie.Aplikacji można następnie używać typów w zestawie runtime implementujące informacje osadzone typu bez konieczności odwołania do zestawu runtime.Publikowane są różne wersje zestawu runtime, można pracować aplikację, która zawiera informacje o typie osadzone z różnymi wersjami bez konieczności ponownie skompilowana.Na przykład, zobacz Wskazówki: osadzanie typów z zarządzanych zestawów (C# i Visual Basic).

Za pomocą /link opcja jest szczególnie przydatna podczas pracy z COM interop.Typy COM można osadzić, tak, że aplikacja nie wymaga już podstawowego zestawu międzyoperacyjnego (PIA) na komputerze docelowym./link Opcja nakazuje kompilatorowi osadzanie informacji typu COM z odwołania zestawu międzyoperacyjnego do wynikowy kod skompilowany.Typ COM jest identyfikowany przez wartość identyfikatora CLSID (GUID).W efekcie aplikacja można uruchomić na komputerze docelowym, które zostały zainstalowane te same typy COM z tej samej wartości identyfikatora CLSID.Aplikacje, które automatyzują pakietu Microsoft Office są dobrym przykładem.Ponieważ aplikacje, takie jak Office zazwyczaj zachować tę samą wartość identyfikatora CLSID między różnymi wersjami, aplikacja może używać wskazanych typów modelu COM, tak długo, jak.NET Framework 4 lub nowszy jest zainstalowany na komputerze docelowym i aplikacja używa metody, właściwości lub zdarzenia, które są zawarte w wskazanych typów COM.

/link Opcji osadza tylko interfejsy, struktur i delegatów.Osadzanie klasy COM nie jest obsługiwane.

[!UWAGA]

Podczas tworzenia wystąpienia typu COM z osadzonych w kodzie, należy utworzyć wystąpienie, przy użyciu odpowiedni interfejs.Próby utworzenia wystąpienia osadzonego typu COM za pomocą CoClass powoduje błąd.

Aby ustawić /link opcji w Visual Studio, dodać odwołanie do zestawu i ustawić Embed Interop Types właściwość, aby true.Domyślne dla Embed Interop Types jest właściwość false.

Jeśli łącze do zestawu COM (Assembly A) która sama odwołuje się do innego zestawu COM (montaż B), trzeba również łącze do zestawu B, jeśli spełniony jest jeden z następujących:

  • Typ z zestawu a dziedziczy typ lub implementuje interfejs z zestawu B.

  • Pole, właściwości, zdarzenia lub metodę, która ma typ zwracany typ lub parametr b zgromadzenie jest wywoływany.

Podobnie jak /Reference opcję kompilatora, /link opcję kompilatora używa pliku odpowiedzi Csc.rsp, które odwołania często używane .NET Framework zespołów.Użyj /noconfig zostanie zignorowana opcję kompilatora, jeśli nie chcesz, aby kompilator, aby użyć pliku Csc.rsp.

Formularz skrócony z /link jest /l.

Generyczne i typy osadzone

W poniższych sekcjach opisano ograniczenia przy użyciu typy rodzajowe w aplikacjach, które typy współdziałania osadzić.

Rodzajowy interfejsów

Nie można używać interfejsów rodzajowy, które są osadzone z zestawu międzyoperacyjnego.To jest pokazane w następującym przykładzie.

// The following code causes an error if ISampleInterface is an embedded interop type.
ISampleInterface<SampleType> sample;

Typy, które mają parametry rodzajowe

Typy, które mają parametru rodzajowego, którego typ jest osadzony z zestawu międzyoperacyjnego nie można użyć Jeśli typ jest z zestawu zewnętrznych.To ograniczenie nie dotyczy interfejsów.Rozważmy na przykład Range interfejsu, który jest zdefiniowany w Microsoft.Office.Interop.Excel zgromadzenia.Jeśli w bibliotece osadza typy współdziałania z Microsoft.Office.Interop.Excel Zgromadzenia i odkrywa metoda, która zwraca typ rodzajowy, który ma parametr, którego typ jest Range interfejsu, metoda musi zwrócić rodzajowy interfejs, jak pokazano w poniższym przykładzie kodu.

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() {


...


    }
}

W poniższym przykładzie kodu klienta może wywołać metodę, która zwraca IList rodzajowy interfejs bez błędu.

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();
    }
}

Przykład

Poniższy kod kompiluje plik źródłowy OfficeApp.cs i odwołuje się do zestawów z COMData1.dll i COMData2.dll do produkcji OfficeApp.exe.

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

Zobacz też

Zadania

Wskazówki: osadzanie typów z zarządzanych zestawów (C# i Visual Basic)

Informacje

/reference (opcje kompilatora C#)

/noconfig (opcje kompilatora C#)

Przegląd współdziałania (Przewodnik programowania w języku C#)

Koncepcje

Kompilacja za pomocą wiersza polecenia przy użyciu csc.exe

Inne zasoby

Opcje kompilatora C#