Compartilhar via


/link (Visual Basic)

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

Termo

Definição

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 Instruções passo a passo: inserindo tipos 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.

Dica

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.

Use /libpath para especificar o diretório no qual uma ou mais das suas referências de assembly estão localizado.

Como o /reference opção de compilador, o /link opção de compilador usa o arquivo de resposta do Vbc. rsp, 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 VBC. 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.

Interfaces 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. 
Dim sample As ISampleInterface(Of SampleType)

Tipos 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.

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

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

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

Exemplo

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

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

Consulte também

Tarefas

Instruções passo a passo: inserindo tipos de assemblies gerenciados (C# e Visual Basic)

Referência

/reference (Visual Basic)

/noconfig

/libpath

Linhas de comando de compilação de exemplo (Visual Basic)

Conceitos

Introdução à interoperabilidade COM (Visual Basic)

Outros recursos

Compilador de linha de comando do Visual Basic