Compartilhar via


/link (Opções do compilador de C#)

Faz o compilador manter informações de tipo COM as montagens especificadas disponível para o projeto que você está compilando no momento.

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

Argumentos

  • fileList
    Obrigatório.Lista separada por vírgulas de nomes de arquivo da montagem.Se o nome do arquivo contiver um espaço, envolva-o com aspas ("").

Comentários

O /link opção permite que você implanta um aplicativo que incorporou o tipo de informações.O aplicativo pode usar tipos que implementam as informações de tipo incorporados sem a necessidade de uma referência ao assembly em tempo de execução em um assembly em tempo de execução.Se forem publicadas várias versões do assembly em tempo de execução, o aplicativo que contém a informação sobre tipos incorporados pode trabalhar com várias versões sem ter que ser recompilado.Para um exemplo, consulte Passo a passo: Incorporação de tipos a partir de Assemblies gerenciados (C# e Visual Basic).

Usando o /link opção é especialmente útil quando você estiver trabalhando com interoperabilidade COM.Você pode incorporar tipos COM para que o seu aplicativo não requer mais um assembly de interoperabilidade primária (PIA) no computador de destino.O /link opção instrui o compilador para incorporar as informações de tipo COM da interop assembly referenciado no código compilado resultante.O tipo de COM é identificado pelo valor CLSID (GUID).Como resultado, seu aplicativo pode ser executado em um computador de destino que tenha instalado os mesmos tipos de COM os mesmos valores CLSID.Os aplicativos que automatizam os Microsoft Office são um bom exemplo.Porque aplicativos como o Office em geral mantêm o mesmo valor CLSID entre diferentes versões, seu aplicativo pode usar os tanto quanto de tipos referenciados COM.NET Framework 4 ou posterior estiver instalado no computador de destino e o seu aplicativo usa métodos, propriedades ou eventos que estão incluídos no referido tipos COM.

O /link opção incorpora apenas interfaces, estruturas e delegados.Não há suporte para classes COM a incorporação.

ObservaçãoObservação

Quando você cria uma instância de um tipo de COM incorporado no seu código, você deve criar a instância usando a interface adequada.Tentativa de criar uma instância de um tipo de COM incorporado usando o CoClass causa um erro.

Para definir o /link de opção em Visual Studio, adicione uma referência de assembly e definir o Embed Interop Types propriedade para true.O padrão para o Embed Interop Types propriedade é false.

Se você vincular a um assembly COM (um Assembly) que por si só faz referência a outro conjunto de COM (Assembly B), também é necessário vincular ao Assembly B, se uma das seguintes opções for verdadeira:

  • Um tipo do Assembly A herda de um tipo ou implementa uma interface do Assembly B.

  • Um campo, propriedade, evento ou método que possui um tipo de retorno ou tipo de parâmetro de Assembly B é chamado.

Como o /reference opção de compilador, o /link opção de compilador usa o arquivo de resposta de Csc.rsp, que as referências usadas com freqüência .NET Framework assemblies.Use o /noconfig opção de compilador, se você não quiser que o compilador para usar o arquivo Csc.rsp.

A forma abreviada do /link é /l.

Genéricos e tipos incorporados

As seções a seguir descrevem as limitações no uso de tipos genéricos em aplicativos que incorporam os tipos de interoperabilidade.

Dd264728.collapse_all(pt-br,VS.110).gifInterfaces Genéricas

Interfaces genéricas que são incorporados a partir de um assembly de interoperabilidade não podem ser usados.Isto é mostrado no exemplo a seguir.

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

Dd264728.collapse_all(pt-br,VS.110).gifTipos que possuem parâmetros genéricos

Tipos que têm um parâmetro genérico cujo tipo é incorporado a partir de um assembly de interoperabilidade não podem ser usados se que seja do tipo de um assembly externo.Essa restrição não se aplica às interfaces.Por exemplo, considere a Range interface é definida na Microsoft.Office.Interop.Excel assembly.Se uma biblioteca incorpora os tipos de interoperabilidade da Microsoft.Office.Interop.Excel assembly e expõe um método que retorna um tipo genérico que tem um parâmetro cujo tipo é o Range de interface, que o método deve retornar uma interface genérica, conforme mostrado no exemplo de código a seguir.

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


...


    }
}

No exemplo a seguir, o código do cliente pode chamar o método que retorna o IList interface genérica sem erro.

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

Exemplo

O código a seguir compila o arquivo de origem OfficeApp.cs e assemblies de referência COMData1.dll e COMData2.dll para produzir OfficeApp.exe.

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

Consulte também

Tarefas

Passo a passo: Incorporação de tipos a partir de Assemblies gerenciados (C# e Visual Basic)

Referência

/Reference (Opções do compilador de C#)

/noconfig (Opções do compilador de C#)

Visão geral da interoperabilidade (guia de programação do C#)

Conceitos

Construção de linha de comando com CSC. exe

Outros recursos

Opções do compilador C#