Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Fait en sorte que le compilateur rende les informations de type COM dans les assemblys spécifiés disponibles pour le projet que vous compilez actuellement.
Syntaxe
-link:fileList
ou
-l:fileList
Les arguments
| Terme | Définition |
|---|---|
fileList |
Obligatoire. Liste délimitée par des virgules des noms de fichiers d’assembly. Si le nom de fichier contient un espace, placez le nom entre guillemets. |
Remarques
L’option -link vous permet de déployer une application qui contient des informations de type incorporées. L’application peut ensuite utiliser des types dans un assembly runtime qui implémentent les informations de type incorporées sans nécessiter de référence à l’assembly runtime. Si différentes versions de l’assembly runtime sont publiées, l’application qui contient les informations de type incorporées peut fonctionner avec les différentes versions sans avoir à être recompilée. Pour obtenir un exemple, consultez procédure pas à pas : incorporation de types à partir d’assemblys managés.
L’utilisation de l’option -link est particulièrement utile lorsque vous travaillez avec l’interopérabilité COM. Vous pouvez incorporer des types COM afin que votre application ne nécessite plus d’assembly PIA (Primary Interop Assembly) sur l’ordinateur cible. L’option -link indique au compilateur d’incorporer les informations de type COM à partir de l’assembly d’interopérabilité référencé dans le code compilé résultant. Le type COM est identifié par la valeur CLSID (GUID). Par conséquent, votre application peut s’exécuter sur un ordinateur cible qui a installé les mêmes types COM avec les mêmes valeurs CLSID. Les applications qui automatisent Microsoft Office sont un bon exemple. Étant donné que les applications comme Office conservent généralement la même valeur CLSID entre différentes versions, votre application peut utiliser les types COM référencés tant que .NET Framework 4 ou version ultérieure est installé sur l’ordinateur cible et que votre application utilise des méthodes, des propriétés ou des événements inclus dans les types COM référencés.
L’option -link incorpore uniquement les interfaces, les structures et les délégués. L’incorporation de classes COM n’est pas prise en charge.
Remarque
Lorsque vous créez une instance d’un type COM incorporé dans votre code, vous devez créer l’instance à l’aide de l’interface appropriée. La tentative de création d’une instance d’un type COM incorporé à l’aide de coClass provoque une erreur.
Pour définir l’option -link dans Visual Studio, ajoutez une référence d’assembly et définissez la Embed Interop Types propriété sur true. La valeur par défaut de la Embed Interop Types propriété est false.
Si vous liez à un assembly COM (Assembly A) qui fait référence à un autre assembly COM (Assembly B), vous devez également établir un lien vers l’assembly B si l’un des éléments suivants est vrai :
Un type d’Assembly A hérite d’un type ou implémente une interface d’Assembly B.
Un champ, une propriété, un événement ou une méthode qui a un type de type de retour ou de paramètre à partir de l’assembly B est appelé.
Utilisez -libpath pour spécifier le répertoire dans lequel se trouve une ou plusieurs références d’assembly.
Comme l’option du compilateur -reference , l’option du -link compilateur utilise le fichier de réponse Vbc.rsp, qui fait référence à des assemblys .NET Framework fréquemment utilisés. Utilisez l’option du compilateur -noconfig si vous ne souhaitez pas que le compilateur utilise le fichier Vbc.rsp.
La forme courte est -link-l.
Génériques et types incorporés
Les sections suivantes décrivent les limitations relatives à l’utilisation de types génériques dans les applications qui incorporent des types d’interopérabilité.
Interfaces génériques
Les interfaces génériques incorporées à partir d’un assembly d’interopérabilité ne peuvent pas être utilisées. Ceci est illustré dans l’exemple suivant.
' The following code causes an error if ISampleInterface is an embedded interop type.
Dim sample As ISampleInterface(Of SampleType)
Types qui ont des paramètres génériques
Les types qui ont un paramètre générique dont le type est incorporé à partir d’un assembly d’interopérabilité ne peuvent pas être utilisés si ce type provient d’un assembly externe. Cette restriction ne s’applique pas aux interfaces. Par exemple, considérez l’interface Range définie dans l’assembly Microsoft.Office.Interop.Excel . Si une bibliothèque incorpore des types d’interopérabilité à partir de l’assembly Microsoft.Office.Interop.Excel et expose une méthode qui retourne un type générique qui a un paramètre dont le type est l’interface Range , cette méthode doit retourner une interface générique, comme illustré dans l’exemple de code suivant.
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
Dans l’exemple suivant, le code client peut appeler la méthode qui retourne l’interface IList générique sans erreur.
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
Exemple :
La ligne de commande suivante compile le fichier OfficeApp.vb source et les assemblys de référence à partir de COMData1.dll et COMData2.dll à produire OfficeApp.exe.
vbc -link:COMData1.dll,COMData2.dll -out:OfficeApp.exe OfficeApp.vb