2010-05-21 3 views
6

From Jon Skeet's blog:Est-ce que .NET possède un éditeur de liens?

Qu'est-ce que le commentaire suivant signifie?

// The line below only works when linked rather than 
    // referenced, as otherwise you need a cast. 
    // The compiler treats it as if it both takes and 
    // returns a dynamic value. 
    string value = com.MakeMeDynamic(10); 

Je comprends ce qu'est le référencement d'un assemblage. Vous pouvez le référencer lors de la compilation des fichiers programme à l'aide de/ref: switch sur la ligne de commande ou vous pouvez ajouter une référence statique à l'assembly dans Visual Studio. Mais comment lier un assembly à .NET?

Veut-il dire, charger l'assemblage en utilisant Reflection (Assembly.LoadFile())? Ou, l'API Win32 LoadLibrary()? Ou, est-ce que .NET a un éditeur de liens dont je n'ai jamais entendu parler?

Répondre

10

C'est pour les assemblages d'interopérabilité primaires COM, fondamentalement. Dans .NET 4, vous pouvez soit les référencer comme normal, soit les "lier"/"les incorporer" - dans ce cas, vous vous retrouvez avec seulement les bits du PIA qui vous intéressent intégrés dans votre propre assemblage. Depuis la ligne de commande, il s'agit de l'option /link: du compilateur C# 4.

+0

Merci, Jon. J'aurais dû terminer la lecture de l'article complet auquel je me suis connecté, avant de poser cette question. Je viens juste de le lire et d'autres articles sur la fonctionnalité "Pas de PIA". Donc, l'attribut/link: est-il un équivalent en ligne de commande de la définition de la propriété "Embed Interop Types" de la référence d'assembly à True dans Visual Studio 2010? (http://thedotnethub.blogspot.com/2009/11/clr4-no-pia.html) En outre, l'option/link: est-elle une nouvelle qui a été introduite en C# 4.0? –

+0

@Water: Oui, c'est l'équivalent, et oui c'est nouveau pour .NET 4 et C# 4. –

+0

Très merci, Jon. BTW, je suis en train de lire la première édition de votre livre "C# en profondeur" et j'adore chaque partie de celui-ci. –

Questions connexes