157 votes

Qu'est-ce qu'un assemblage en C# ou .NET ?

Pourriez-vous expliquer ce qu'est une assemblée en C# ou .NET ?

  1. Où commence-t-il et où finit-il ?
  2. Quelles informations importantes dois-je connaître sur les Assemblées ?

8 votes

À proprement parler, une assemblée n'est-elle pas un concept .NET plutôt qu'un concept C# ?

20 votes

@JeffH : quand j'ai posé la question, je pensais que c'était un concept C#. Je comprends maintenant que c'est un concept .NET. Néanmoins, comme je pense que d'autres personnes peuvent être confuses comme je l'ai été, je n'ai intentionnellement pas modifié la question pour Google afin de tenir compte de cette erreur...

2 votes

C'est également un concept du C#. Vous devez le comprendre pour utiliser correctement le modificateur d'accès "interne".

161voto

marc_s Points 321990

Une assembly est la sortie compilée de votre code, typiquement une DLL, mais votre EXE est aussi une assembly. Il s'agit de la plus petite unité de déploiement pour tout projet .NET.

L'assemblage contient généralement du code .NET en MSIL (Microsoft Intermediate language) qui sera compilé en code natif ("JITted" - compilé par le compilateur Just-In-Time) lors de sa première exécution sur une machine donnée. Ce code compilé sera également stocké dans l'assemblage et réutilisé lors des appels ultérieurs.

L'assemblage peut également contenir des ressources comme des icônes, des bitmaps, des tableaux de chaînes de caractères, etc. En outre, l'assemblage contient également des métadonnées dans le manifeste de l'assemblage - des informations comme le numéro de version, le nom fort, la culture, les assemblages référencés, etc.

Dans 99% des cas, un assemblage correspond à un fichier physique sur le disque. Le cas d'un assemblage multi-fichier (un assemblage, réparti sur plus d'un seul fichier) semble être un cas limite plutôt étrange que je n'ai jamais rencontré jusqu'à présent dans mes 5+ années de développement .NET.

Dans un assemblage multifile, il n'y aurait toujours qu'un seul manifeste d'assemblage dans une DLL ou un EXE et le code MSIL dans plusieurs fichiers netmodule.

1 votes

@marc_s : Je pense que vous voulez parler d'un fichier multi-assemblage. Il est possible d'empaqueter plusieurs assemblages dans un seul fichier via les outils de ligne de commande de Studio, mais pas directement via l'IDE.

6 votes

Les métadonnées contenues dans le manifeste de l'assemblage sont très importantes. Le manifeste contient des informations telles que la version, le nom fort, la culture, les assemblages référencés, etc. Dans une assembly multifile, il n'y aurait toujours qu'un seul manifeste d'assembly dans une dll ou un exe et le code MSIL dans plusieurs fichiers .netmodule. Fondamentalement, une assembly est l'unité minimale de déploiement dans >net

0 votes

@marc_s : J'apprécierais que vous ajoutiez le point de @Pratik à la réponse, merci.

20voto

snr Points 4881

La réponse est en ordre pour une prise en charge immédiate.

En termes simples, il s'agit du projet compilé comprenant vos classes et des fichiers supplémentaires, s'il y en a. C'est-à-dire que chaque projet dans une solution est montage .

Ou plus techniquement,

Un site montage est l'endroit où un type est stocké dans le flesystem. Les assemblages sont un mécanisme pour déployer du code. Par exemple, le System.Data.dll L'assemblage contient des types pour la gestion des données. Pour utiliser des types dans d'autres assemblages, ils doivent être référencés. - Fuente

Comment le savons-nous ? Si vous regardez les propriétés d'un projet en vertu de la solution vous pouvez voir les images suivantes.

Lorsque vous compilez le projet, il se révèle être DLL o EXE .

enter image description here enter image description here enter image description here

14voto

Assemblage .NET

Dans le cadre de Microsoft .NET, une assemblage est un code partiellement compilé partiellement compilé destiné à être utilisé lors du déploiement, le versioning et la sécurité.

9voto

Raghav Khunger Points 2273

http://www.codeguru.com/columns/csharp_learning/article.php/c5845

Un assemblage est un fichier qui est automatiquement généré par le compilateur lors de la compilation réussie de chaque application .NET. Il peut s'agir d'une bibliothèque de liens dynamiques ou d'un fichier exécutable. Il n'est généré qu'une seule fois pour une application et l'assemblage est mis à jour à chaque compilation ultérieure.

2 votes

Les assemblages sont distincts des fichiers qui les contiennent.

1 votes

@Raghav - Mettez à jour votre photo avec quelque chose de décontracté pour l'amour du ciel ! Nous ne posons pas ici pour des passeports, vous savez !

4voto

Chris S Points 32376

Voici une autre explication de la composition des assemblages .NET, une mini-citation :

Le cadre .NET est constitué des concepts de modules, d'assemblages, qui stockent les métadonnées et les manifestes informations. Une assemblée peut contenir plusieurs modules. Visual C# ne crée jamais qu'un seul crée un seul module qui est transformé en un assemblage par le compilateur C# (csc.exe), mais une assembly peut lier plusieurs modules .NET ensemble via la ligne de commande l'outil de ligne de commande assembly linker (al.exe). de commande (al.exe). Par exemple, chacun de vos fichiers de code source source .cs peut être compilé dans un module et lié ensemble pour former un assemblage - un assemblage est juste une collection de modules et de ressources. Un de ces modules, cependant, doit contenir les métadonnées du manifeste (voir ci-dessous) informations pour que l'assemblage soit compris par le CLR.
....
Après avoir créé un nouveau fichier .exe ou .dll dans VS.NET, vous voyez votre fichier apparaître dans votre dossier bin. L'ouvrir dans le bloc-notes vous donnera du charabia, ou même dans un éditeur hexadécimal sans connaître la structure du fichier fichier, vous avez besoin d'un outil comme ildasm.exe ou CFF explorer pour lui donner un sens. sens. La structure de l'assemblage est comme suit :

En-tête PE
En-tête CLR
Métadonnées du CLR
CLR
Code IL
Données indigènes

1 votes

Où diable ce lien me mène-t-il ? Une sorte de redirections infinies ! Après quelques redirections, je suis arrivé sur une page qui dit este . Il n'y a pas non plus de moyen d'obtenir l'URL originale que vous avez postée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X