web-dev-qa-db-fra.com

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

Pourriez-vous expliquer ce qu'est un assembly en C # ou .NET?

  1. Où commence-t-elle et où finit-elle?
  2. Quelles informations importantes dois-je connaître sur les assemblages?
77
Roee Adler

Un assembly est la sortie compilée de votre code, généralement une DLL, mais votre EXE est également un assembly. Il s'agit de la plus petite unité de déploiement pour tout projet .NET.

L'assembly contient généralement du code .NET en MSIL (langage Microsoft Intermediate) qui sera compilé en code natif ("JITted" - compilé par le compilateur Just-In-Time) la première fois qu'il est exécuté sur une machine donnée. Ce code compilé sera également stocké dans l'assembly et réutilisé lors des appels suivants.

L'assembly peut également contenir des ressources telles que des icônes, des bitmaps, des tables de chaînes, etc. En outre, l'assembly contient également des métadonnées dans le manifeste de l'assembly - des informations telles que le numéro de version, le nom fort, la culture, les assemblys référencés, etc.

Dans 99% de vos cas, un assemblage équivaut à un fichier physique sur le disque - le cas d'un assemblage à plusieurs fichiers (un assemblage, réparti sur plusieurs fichiers) semble être un cas Edge plutôt étrange que j'ai jamais rencontré jusqu'à présent dans mes 5+ années de développement .NET.

Dans un assembly multifichier, il n'y aurait toujours qu'un seul manifeste Assembly dans un DLL ou EXE et le code MSIL dans plusieurs fichiers de netmodule).

92
marc_s

Assemblage .NET

Dans le cadre Microsoft .NET, un assembly est une bibliothèque de code partiellement compilée à utiliser dans le déploiement, la gestion des versions et la sécurité.

10
user151323

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

Un assembly est un fichier qui est généré automatiquement 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 est généré une seule fois pour une application et à chaque compilation ultérieure, l'assembly est mis à jour.

7
Raghav

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

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

En-tête PE
En-tête CLR
Métadonnées CLR
CLR
Code IL
Données natives

3
Chris S

Lorsqu'un code source est compilé par le compilateur de langage, il génère un Managed Assembly et MSIL (MisroSoft Intermediate Language). Cet assemblage contient fichier .dll ou .exe. Un Assebmly peut être de deux types Private Assembly et Shared Assembly, l'assembly partagé est stocké dans GAC (Global Assembly Cache) afin que toute application puisse y faire référence pendant que l'assembly privé est stocké dans le dossier d'application qui ne peut être utilisé que par une seule application.

1
gaurav patni

Un assembly est un DLL ou un EXE qui sera créé lorsque vous le publierez ou compilerez votre application.

0
Anup Shetty