/link (Visual Basic)
Faz o compilador disponibilizar informações de tipo COM nos assemblies do especificado para o projeto que você está compilando no momento.
/link:fileList
' -or-
/l:fileList
Arguments
Term |
Definition |
fileList |
Required. Comma-delimited list of assembly file names. If the file name contains a space, enclose the name in quotation marks. |
Comentários
O /link opção permite que você implantar um aplicativo que incorporou o tipo de informações. O aplicativo pode usar tipos que implementam as informações de tipo incorporados sem exigir uma referência ao assembly em tempo de execução em um assembly em tempo de execução. If various versions of the runtime assembly are published, the application that contains the embedded type information can work with the various versions without having to be recompiled. For an example, see Demonstra Passo a passo: Tipos de incorporação de Assemblies gerenciados (C# e Visual Basic).
Usando o /link opção é especialmente útil quando você estiver trabalhando com interoperabilidade de COM. Você pode incorporar tipos COM para que 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 para o 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 tipos COM referenciado tão longos quanto.NET Framework 4 ou posterior está instalado no computador de destino e o seu aplicativo usa os 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 do tipo COM incorporado no seu código, você deve criar a instância usando a interface apropriada. Tentativa de criar uma instância do tipo COM incorporado usando o CoClass causa um erro. |
Para definir o /link opção na 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 é a propriedade false.
Se você vincular a um assembly de COM (um Assembly) que faz referência a outro assembly de COM (Assembly B), você também deve vincular ao Assembly B, se uma das seguintes opções for verdadeira:
A type from Assembly A inherits from a type or implements an interface from Assembly B.
A field, property, event, or method that has a return type or parameter type from Assembly B is invoked.
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 do compilador, o /link opção do compilador usa arquivo de respostade vbc, que freqüentemente as referências usadas .NET Framework assemblies. Use o /noconfig opção do compilador se você não quiser que o compilador para usar o arquivo Vbc.
A forma abreviada de /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.
Generic Interfaces
Interfaces genéricas que são incorporados a partir de um assembly de interoperabilidade não podem ser usados. This is shown in the following example.
' 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 é do tipo de um assembly externo. Essa restrição não se aplicam a interfaces. Por exemplo, considere a Range interface é definido 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 interface, que o método deve retornar uma interface genérica, conforme mostrado no seguinte exemplo de código.
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 de 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 de COMData1.dll e COMData2.dll para produzir OfficeApp.exe.
vbc /link:COMData1.dll,COMData2.dll /out:OfficeApp.exe OfficeApp.vb
Consulte também
Tarefas
Demonstra Passo a passo: Tipos de incorporação de Assemblies gerenciados (C# e Visual Basic)
Referência
Exemplos de Linhas de Comando de Compilação (Visual Basic)
Conceitos
Introdução à interoperabilidade COM (Visual Basic)