/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 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çã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.
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
Passo a passo: Incorporação de tipos a partir de Assemblies gerenciados (C# e Visual Basic)
Referência
Linhas de comando de compilação de amostra (Visual Basic)
Conceitos
Introdução ao COM Interop (Visual Basic)