c# - Que sont les assemblages.NET?




(12)

Que sont les assemblages .NET? J'ai parcouru le net et je ne suis pas capable de comprendre la définition.


Un assembly est une collection de types et de ressources formant une unité logique de fonctionnalité. Tous les types dans .NET Framework doivent exister dans les assemblys; le Common Language Runtime ne prend pas en charge les types en dehors des assemblys. Chaque fois que vous créez une application Microsoft Windows®, un service Windows, une bibliothèque de classes ou une autre application avec Visual Basic .NET, vous créez un assembly unique. Chaque assembly est stocké en tant que fichier .exe ou .dll.

Source: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4

Pour ceux qui ont un arrière-plan Java comme moi, j'espère que le diagramme suivant clarifie les concepts -

Les assemblys sont juste comme des fichiers jar (contenant plusieurs fichiers .class). Votre code peut référencer un assembly existant ou vous code lui-même peut être publié en tant qu'assemblage pour que d'autres code référencent et utilisent (vous pouvez considérer cela comme des fichiers jar en Java que vous pouvez ajouter dans vos dépendances de projet).

À la fin de la journée, un assembly est un code compilé qui peut être exécuté sur n'importe quel système d'exploitation avec CLR installé. Cela revient à dire que le fichier .class ou le fichier jar peut être exécuté sur n'importe quelle machine avec JVM installée.


Comme l'assemblage est la plus petite unité de sécurité, de déploiement et de réutilisation du code dans Microsoft.Net.

Il contient:

- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header

En .Net, un assembly peut être:

Une collection de diverses parties gérables contenant des Types (or Classes) , des Resources (Bitmaps/Images/Strings/Files) , Namespaces , Config Files compilés en Privately ou en Publicly ; déployé dans un dossier local ou Shared (GAC) ; discover-able par d'autres programs/assemblies et; peut être version-ed.


En plus de la réponse acceptée, je veux vous donner un exemple!

Par exemple, nous utilisons tous

System.Console.WriteLine()

Mais où est le code pour System.Console.WriteLine !?
quel est le code qui met le texte sur la console?

Si vous regardez la première page de la documentation de la classe Console , vous verrez en haut de la page: Assembly: mscorlib (in mscorlib.dll) Cela indique que le code de la classe Console se trouve dans un assem-bly nommé mscorlib. Un assembly peut contenir plusieurs fichiers, mais dans ce cas, il s'agit d'un seul fichier, qui est la bibliothèque de liens dynamiques mscorlib.dll.

Le fichier mscorlib.dll est très important dans .NET, il est la DLL principale pour les bibliothèques de classes dans .NET, et il contient toutes les classes et structures .NET de base.

Si vous connaissez C ou C ++, vous avez généralement besoin d'une directive #include en haut qui fait référence à un fichier d'en-tête. Le fichier include fournit des prototypes de fonctions au compilateur. sur le contraste Le compilateur C # n'a pas besoin de fichiers d'en-tête. Pendant la compilation, le compilateur C # accède directement au fichier mscorlib.dll et obtient des informations à partir des métadonnées de ce fichier concernant toutes les classes et autres types définis dans ce fichier.

Le compilateur C # est capable d'établir que mscorlib.dll contient en effet une classe nommée Console dans un espace de nom nommé System avec une méthode nommée WriteLine qui accepte un seul argument de type string.

Le compilateur C # peut déterminer que l'appel WriteLine est valide et le compilateur établit une référence à l'assembly mscorlib dans l'exécutable.

Par défaut, le compilateur C # accédera à mscorlib.dll, mais pour les autres DLL, vous devrez indiquer au compilateur l'assembly dans lequel se trouvent les classes. Ceux-ci sont connus comme références.

J'espère que c'est clair maintenant!

De DotNetBookZero Charles pitzold



L'assemblage est la partie fondamentale de la programmation avec .NET Framework. Il contient le code que CLR exécute le code MSIL (Microsoft Intermediate Language) dans un fichier exécutable portable ne sera pas exécuté s'il n'a pas de manifeste d'assembly associé.


Les applications .NET sont construites en assemblant un nombre quelconque d'assemblages. Autrement dit, un assembly n'est rien de plus qu'un binaire versionné, auto-descriptif (DLL ou EXE) contenant une collection de types (classes, interfaces, structures, etc.) et des recours optionnels (images, tables de chaînes et autres joyeusetés). Une chose dont il faut être conscient, c'est que l'organisation interne d'un assembly .NET n'a rien à voir avec l'organisation interne d'un serveur COM classique (indépendamment des extensions de fichiers partagées).


MSDN a une bonne explication :

Les assemblys sont les blocs de construction des applications .NET Framework; Ils constituent l'unité fondamentale du déploiement, du contrôle de version, de la réutilisation, de la portée d'activation et des autorisations de sécurité. Un assembly est une collection de types et de ressources conçus pour fonctionner ensemble et former une unité logique de fonctionnalité. Un assembly fournit au Common Language Runtime les informations dont il a besoin pour connaître les implémentations de type. Pour l'exécution, un type n'existe pas en dehors du contexte d'un assembly.


Un assembly est une unité d'exécution composée de types et d'autres ressources. Tous les types d'un assemblage ont le même numéro de version.

Souvent, un assembly a un seul espace de noms et est utilisé par un programme. Mais il peut s'étendre sur plusieurs espaces de noms. En outre, un espace de noms peut s'étendre sur plusieurs assemblys. Dans les grandes conceptions, un assemblage peut consister en plusieurs fichiers qui sont maintenus ensemble par un manifeste (c'est-à-dire une table des matières).

En C #, un assemblage est le plus petit déploiement d'une application .Net. Il peut s'agir d'une DLL ou d'un exe. Il en existe deux types: 1. Assemblage privé 2. Assemblage public / partagé


Voir this :

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


collection physique de Class, interface, enum etc qui est en code IL. Ce qui peut être .EXE ou .DLL fichier .EXE est un fichier exécutable et .DLL peut dynamiquement utilisé dans n'importe quel langage .net pris en charge.


Assemblées

Lorsque vous compilez une application, le code MSIL créé est stocké dans un assembly. Les assemblys incluent à la fois des fichiers d'application exécutables que vous pouvez exécuter directement depuis Windows sans avoir besoin d'autres programmes (avec une extension de fichier .exe) et de bibliothèques (avec une extension .dll) pour d'autres applications.

En plus de contenir MSIL, les assemblages incluent également des méta-informations (c'est-à-dire des informations sur les informations contenues dans l'assemblage, également connues sous le nom de métadonnées) et des ressources facultatives (données supplémentaires utilisées par le MSIL, tels que fichiers son et images). Les méta-informations permettent aux assemblages d'être entièrement auto-descriptifs. Vous n'avez besoin d'aucune autre information pour utiliser un assembly, ce qui signifie que vous évitez des situations telles que l'impossibilité d'ajouter des données requises au registre système, etc., ce qui était souvent un problème lors du développement avec d'autres plateformes.

Cela signifie que le déploiement d'applications est souvent aussi simple que de copier les fichiers dans un répertoire sur un ordinateur distant. Comme aucune information supplémentaire n'est requise sur les systèmes cibles, vous pouvez simplement exécuter un fichier exécutable à partir de ce répertoire et (en supposant que le CLR .NET soit installé), vous êtes prêt à partir.

Bien sûr, vous ne voulez pas nécessairement inclure tout le nécessaire pour exécuter une application à un endroit. Vous pouvez écrire du code qui effectue les tâches requises par plusieurs applications. Dans de telles situations, il est souvent utile de placer le code réutilisable dans un endroit accessible à toutes les applications. Dans le .NET Framework, il s'agit du Global Assembly Cache (GAC). Placer du code dans le GAC est simple - il suffit de placer l'assembly contenant le code dans le répertoire contenant ce cache.





.net