Lisez CLR via C # . Vous saurez tout à ce sujet à la fin. Je recommande fortement ce livre.
David Neale
Réponses:
169
En termes plus simples: un morceau de code (précompilé) qui peut être exécuté par l'environnement d'exécution .NET. Un programme .NET se compose d'un ou plusieurs assemblys.
@KimJongWoo - Non, un fichier Jar est juste un fichier zip qui contient des fichiers de bytecode compilés. Un assembly est un fichier PE (Portable Executable format) (c'est-à-dire une DLL ou un EXE), mais conceptuellement, il sert des objectifs similaires.
Erik Funkenbusch
C'est donc comme un .classfichier dans le monde Java?
mljrg
245
L'assemblage est la plus petite unité de déploiement d'une application .net. Il peut s'agir d'une DLL ou d'un exe .
Il existe principalement deux types:
Assemblée privée:
la DLL ou l'exe qui est la propriété exclusive d'une seule application. Il est généralement stocké dans le dossier racine de l'application
Assemblage public / partagé:
c'est une DLL qui peut être utilisée par plusieurs applications à la fois. Un assembly partagé est stocké dans GAC, c'est-à-dire Global Assembly Cache .
Cela semble difficile? Naa ....
GAC est simplement le dossier C: \ Windows \ Assembly où vous pouvez trouver les assemblys / dll publics de tous les logiciels installés sur votre PC.
Il existe également un troisième type d'assemblage, le moins connu: l'assemblage satellite .
Un assemblage satellite contient uniquement des objets statiques comme des images et d'autres fichiers non exécutables requis par l'application.
cela pourrait devenir lent. une fois qu'un dossier en a reçu un millier, Windows ralentit en essayant de parcourir l'arborescence de répertoires ou simplement de lire le répertoire.
Jim Michaels
@mangeshkt - Est-il possible de copier la dll d'une application et de la placer dans le répertoire racine d'une autre, pourrai-je utiliser les fonctionnalités de la 1ère?
Shivam657
57
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 à partir de Windows sans avoir besoin d'autres programmes (ceux-ci ont une extension de fichier .exe) et des bibliothèques (qui ont une extension .dll) à utiliser par d'autres applications.
En plus de contenir MSIL, les assemblys incluent également des méta-informations (c'est-à-dire des informations sur les informations contenues dans l'assembly, également appelées métadonnées) et des ressources facultatives (données supplémentaires utilisées par MSIL, telles que des fichiers audio et des 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 le fait de ne pas ajouter les données requises au registre système, etc., ce qui était souvent un problème lors du développement avec d'autres plates-formes.
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. Étant donné qu'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 .NET CLR est installé), vous êtes prêt à partir.
Bien sûr, vous ne voudrez pas nécessairement inclure tout le nécessaire pour exécuter une application en un seul endroit. Vous pouvez écrire du code qui exécute 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). Le placement de code dans le GAC est simple - vous placez simplement l'assembly contenant le code dans le répertoire contenant ce cache.
Pour plus de clarté "Lorsque vous compilez une application, le code MSIL créé est stocké dans un assembly". Il suffit d'ajouter pour afficher le contenu d'un assemblage, vous pouvez utiliser ILSPY.
Sandeep
33
Un assembly est le fichier .dll réel sur votre disque dur où les classes du .NET Framework sont stockées. Par exemple, toutes les classes contenues dans ASP.NET Framework se trouvent dans un assembly nommé System.Web.dll.
Plus précisément, un assembly est l'unité principale de déploiement, de sécurité et de contrôle de version dans le .NET Framework. Dans la mesure où un assembly peut s'étendre sur plusieurs fichiers, un assembly est souvent appelé une DLL "logique".
Remarque
Le .NET Framework (version 2.0) comprend 51 assemblys.
Il existe deux types d'assemblées: privées et partagées. Un assembly privé ne peut être utilisé que par une seule application. Un assemblage partagé, en revanche, peut être utilisé par toutes les applications situées sur le même serveur.
Les assemblys partagés se trouvent dans le Global Assembly Cache (GAC). Par exemple, l'assembly System.Web.dll et tous les autres assemblys inclus avec le .NET Framework se trouvent dans le Global Assembly Cache.
Remarque
Le Global Assembly Cache se trouve physiquement dans le dossier \ WINDOWS \ Assembly de votre ordinateur. Il existe une copie distincte de chaque assembly dans votre dossier \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. Le premier ensemble d'assemblages est utilisé au moment de l'exécution et le second ensemble est utilisé au moment de la compilation.
Avant de pouvoir utiliser une classe contenue dans un assembly dans votre application, vous devez ajouter une référence à l'assembly. Par défaut, une application ASP.NET référence les assemblys les plus courants contenus dans le Global Assembly Cache:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
System.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
Pour utiliser une classe particulière dans le .NET Framework, vous devez faire deux choses. Tout d'abord, votre application doit référencer l'assembly qui contient la classe. Deuxièmement, votre application doit importer l'espace de noms associé à la classe.
Dans la plupart des cas, vous n'aurez pas à vous soucier de référencer l'assembly nécessaire car les assemblys les plus courants sont référencés automatiquement. Toutefois, si vous devez utiliser un assembly spécialisé, vous devez ajouter explicitement une référence à l'assembly. Par exemple, si vous devez interagir avec Active Directory à l'aide des classes de l'espace de noms System.DirectoryServices, vous devrez ajouter une référence à l'assembly System.DirectoryServices.dll à votre application.
Chaque entrée de classe dans la documentation du SDK .NET Framework répertorie l'assembly et l'espace de noms associés à la classe. Par exemple, si vous recherchez la classe MessageQueue dans la documentation, vous découvrirez que cette classe se trouve dans l'espace de noms System.Messaging situé dans l'assembly System.Messaging.dll.
Si vous utilisez Visual Web Developer, vous pouvez ajouter une référence à un assembly de manière explicite en sélectionnant l'option de menu Website, Add Reference et en sélectionnant le nom de l'assembly que vous devez référencer. Par exemple, l'ajout d'une référence à l'assembly System.Messaging.dll entraîne l'ajout du fichier de configuration Web du listing 1.4 à votre application.
Par exemple. Web.Config
enter code here
Si vous préférez ne pas utiliser Visual Web Developer, vous pouvez ajouter la référence à l'assembly System.Messaging.dll en créant manuellement le fichier dans l'exemple ci-dessus
Beaucoup plus technique que la réponse acceptée, cela devrait être la réponse acceptée.
sparkyShorts
8
Wikipédia doit dire:
Dans le framework 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é. Il existe deux types: les assemblys de processus (EXE) et les assemblys de bibliothèque (DLL). Un assembly de processus représente un processus qui utilisera des classes définies dans des assemblys de bibliothèque. Les assemblys .NET contiennent du code en CIL, qui est généralement généré à partir d'un langage CLI, puis compilé en langage machine au moment de l'exécution par le compilateur CLR juste à temps. Un assemblage peut consister en un ou plusieurs fichiers. Les fichiers de code sont appelés modules. Un assembly peut contenir plusieurs modules de code et comme il est possible d'utiliser différents langages pour créer des modules de code, il est techniquement possible d'utiliser plusieurs langages différents pour créer un assembly.
Si vous avez vraiment parcouru, il serait utile de clarifier ce que vous ne comprenez pas
Dans le framework Microsoft .NET, un assembly est une bibliothèque de code partiellement compilée pour une utilisation dans le déploiement, la gestion des versions et la sécurité
collection physique de classe, interface, énum, etc. qui est en code IL. Qui peut être un fichier .EXE ou .DLL .EXE est un fichier exécutable et .DLL peut être utilisé dynamiquement dans n'importe quelle langue prise en charge par .net.
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 n'a qu'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 se composer de plusieurs fichiers qui sont maintenus ensemble par un manifeste (c'est-à-dire une table des matières).
En C #, un assembly est le plus petit déploiement d'une application .Net. Il peut s'agir d'une dll ou d'une exe. Il a deux types: 1. Private Assembly 2. Public / Shared Assembly
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 place le texte sur la console?
Si vous consultez la première page de la documentation de la classe Console , vous verrez en haut ce qui suit: Assembly: mscorlib (in mscorlib.dll) Ceci indique que le code de la classe Console se trouve dans un ensemble. nommé mscorlib. Un assembly peut être composé de 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 s'agit de la DLL principale pour les bibliothèques de classes dans .NET, et il contient toutes les classes et structures de base .NET.
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. Lors de la compilation, le compilateur C # accède directement au fichier mscorlib.dll et obtient des informations des métadonnées de ce fichier concernant toutes les classes et autres types qui y sont définis.
Le compilateur C # est capable d'établir que mscorlib.dll contient en effet une classe nommée Console dans un espace de noms nommé System avec une méthode nommée WriteLine qui accepte un seul argument de type chaîne.
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ède à mscorlib.dll, mais pour les autres DLL, vous devrez indiquer au compilateur l'assembly dans lequel se trouvent les classes. Ce sont des références.
Les assemblys sont les blocs de construction des applications .NET Framework; ils forment 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 un ensemble de types et de ressources conçus pour fonctionner ensemble et former une unité logique de fonctionnalité. Un assembly fournit au runtime de langage commun les informations dont il a besoin pour connaître les implémentations de type. Pour le runtime, un type n'existe pas en dehors du contexte d'un assembly.
Un assembly est une collection de types et de ressources qui forme une unité logique de fonctionnalité. Tous les types dans .NET Framework doivent exister dans les assemblys; le runtime de langage commun 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é dans un fichier .exe ou .dll.
Pour ceux qui ont des antécédents Java comme moi, j'espère que le diagramme suivant clarifie les concepts -
Les assemblys sont comme des fichiers jar (contenant plusieurs fichiers .class). Votre code peut référencer un assemblie existant ou votre code lui-même peut être publié en tant qu'assemblie pour un autre code à référencer et à utiliser (vous pouvez le penser 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 fourni peut s'exécuter sur n'importe quelle machine sur laquelle JVM est installée.
Une collection de divers gérables parties contenant Types (or
Classes), Resources (Bitmaps/Images/Strings/Files), Namespaces,
Config Filescompilé Privatelyou Publicly; déployé dans un
dossier localou Shared (GAC); discover-ablepar d'autres
programs/assemblieset; peut être édité en version.
L'assemblage est la partie fondamentale de la programmation avec .NET Framework. Il contient du 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 illimité d'assemblages. En termes simples, un assemblage n'est rien de plus qu'un binaire versionné et auto-descriptif (DLL ou EXE) contenant une collection de types (classes, interfaces, structures, etc.) et des recours facultatifs (images, tables de chaînes et ainsi de suite). Une chose dont il est douloureusement conscient en ce moment, c'est que l'organisation interne d'un assembly .NET ne ressemble en rien à l'organisation interne d'un serveur COM classique (quelles que soient les extensions de fichiers partagées).
Dans .NET, lorsque nous compilons notre code source, l'assembly est généré dans Visual Studio. L'assemblage se compose de deux parties Manifest et IL (Intermediate Language). Le manifeste contient des métadonnées d'assembly: les exigences de version de l'assembly, l'identité de sécurité, les noms et les hachages de tous les fichiers qui composent l'assembly. IL contient des informations sur les classes, les constructeurs, la méthode principale, etc.
Les solutions Visual Studio consistent en un ou plusieurs projets. Par exemple: les projets de console peuvent produire un assemblage . Un assembly est logiquement un morceau de code qui peut être expédié aux clients et physiquement un .EXE (programme exécutable) ou .DLL (sont réutilisables par d'autres programmes).
Les assemblys contiennent des informations sur le contenu, la gestion des versions et les dépendances, les applications qui les utilisent n'ont pas besoin de s'appuyer sur des sources externes, telles que le registre sur les systèmes Windows, pour fonctionner correctement. Les assemblys réduisent les conflits .dll et rendent vos applications plus fiables et plus faciles à déployer.
C'est une collection de types et de ressources conçus pour fonctionner ensemble et former une unité logique de fonctionnalité. Les assemblys prennent la forme de fichiers exécutables (.exe) ou de bibliothèque de liens dynamiques (.dll) et constituent les blocs de construction des applications .NET. Ils fournissent au runtime de langage commun les informations dont il a besoin pour connaître les implémentations de type.
Chaque assembly possède un fichier manifeste d'assembly. Semblable à une table des matières, le manifeste d'assembly contient:
L'identité de l'assemblée (son nom et sa version).
Un tableau de fichiers décrivant tous les autres fichiers qui composent l'assembly, tels que les autres assemblys que vous avez créés sur lesquels votre fichier .exe ou .dll s'appuie, les fichiers bitmap ou les fichiers Lisezmoi.
Une liste de références d'assembly, qui est une liste de toutes les dépendances externes, telles que .dlls ou d'autres fichiers. Les références d'assembly contiennent des références aux objets globaux et privés. Dans .NET Framework, les objets globaux résident dans le Global Assembly Cache (GAC). System.IO.dll est un exemple d'un assembly dans le GAC. Les objets privés doivent se trouver dans un niveau de répertoire égal ou inférieur au répertoire dans lequel votre application est installée.
Pour utiliser un assembly dans une application, vous devez lui ajouter une référence. Une fois qu'un assembly est référencé, tous les types, propriétés, méthodes et autres membres accessibles de ses espaces de noms sont disponibles pour votre application comme si leur code faisait partie de votre fichier source.
Nous savons donc tous que notre code source est converti en langage intermédiaire Microsoft (MSIL). Au moment de l'exécution, CLR (Common Languge Runtime) convertit le MSIL en code natif avec le compilateur JIT. Avant de convertir le code MSIL doit passer un processus de vérification qui examine le MSIL + MetaData (nom des assemblys, version, références): pour savoir si le code peut être déterminé comme étant de type sécurisé. s'il passe la vérification, MSIL est converti en code natif. Toutes les méthodes appelées sont converties en langage machine et enregistrées dans le cache pour une utilisation ultérieure.
Réponses:
En termes plus simples: un morceau de code (précompilé) qui peut être exécuté par l'environnement d'exécution .NET. Un programme .NET se compose d'un ou plusieurs assemblys.
la source
.class
fichier dans le monde Java?L'assemblage est la plus petite unité de déploiement d'une application .net. Il peut s'agir d'une DLL ou d'un exe .
Il existe principalement deux types:
Assemblée privée: la DLL ou l'exe qui est la propriété exclusive d'une seule application. Il est généralement stocké dans le dossier racine de l'application
Assemblage public / partagé: c'est une DLL qui peut être utilisée par plusieurs applications à la fois. Un assembly partagé est stocké dans GAC, c'est-à-dire Global Assembly Cache .
Cela semble difficile? Naa ....
GAC est simplement le dossier C: \ Windows \ Assembly où vous pouvez trouver les assemblys / dll publics de tous les logiciels installés sur votre PC.
Il existe également un troisième type d'assemblage, le moins connu: l'assemblage satellite .
Un assemblage satellite contient uniquement des objets statiques comme des images et d'autres fichiers non exécutables requis par l'application.
J'espère que cela aide les lecteurs!
la source
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 à partir de Windows sans avoir besoin d'autres programmes (ceux-ci ont une extension de fichier .exe) et des bibliothèques (qui ont une extension .dll) à utiliser par d'autres applications.
En plus de contenir MSIL, les assemblys incluent également des méta-informations (c'est-à-dire des informations sur les informations contenues dans l'assembly, également appelées métadonnées) et des ressources facultatives (données supplémentaires utilisées par MSIL, telles que des fichiers audio et des 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 le fait de ne pas ajouter les données requises au registre système, etc., ce qui était souvent un problème lors du développement avec d'autres plates-formes.
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. Étant donné qu'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 .NET CLR est installé), vous êtes prêt à partir.
Bien sûr, vous ne voudrez pas nécessairement inclure tout le nécessaire pour exécuter une application en un seul endroit. Vous pouvez écrire du code qui exécute 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). Le placement de code dans le GAC est simple - vous placez simplement l'assembly contenant le code dans le répertoire contenant ce cache.
la source
Un assembly est le fichier .dll réel sur votre disque dur où les classes du .NET Framework sont stockées. Par exemple, toutes les classes contenues dans ASP.NET Framework se trouvent dans un assembly nommé System.Web.dll.
Plus précisément, un assembly est l'unité principale de déploiement, de sécurité et de contrôle de version dans le .NET Framework. Dans la mesure où un assembly peut s'étendre sur plusieurs fichiers, un assembly est souvent appelé une DLL "logique".
Remarque
Le .NET Framework (version 2.0) comprend 51 assemblys.
Il existe deux types d'assemblées: privées et partagées. Un assembly privé ne peut être utilisé que par une seule application. Un assemblage partagé, en revanche, peut être utilisé par toutes les applications situées sur le même serveur.
Les assemblys partagés se trouvent dans le Global Assembly Cache (GAC). Par exemple, l'assembly System.Web.dll et tous les autres assemblys inclus avec le .NET Framework se trouvent dans le Global Assembly Cache.
Remarque
Le Global Assembly Cache se trouve physiquement dans le dossier \ WINDOWS \ Assembly de votre ordinateur. Il existe une copie distincte de chaque assembly dans votre dossier \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. Le premier ensemble d'assemblages est utilisé au moment de l'exécution et le second ensemble est utilisé au moment de la compilation.
Avant de pouvoir utiliser une classe contenue dans un assembly dans votre application, vous devez ajouter une référence à l'assembly. Par défaut, une application ASP.NET référence les assemblys les plus courants contenus dans le Global Assembly Cache:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
System.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
Pour utiliser une classe particulière dans le .NET Framework, vous devez faire deux choses. Tout d'abord, votre application doit référencer l'assembly qui contient la classe. Deuxièmement, votre application doit importer l'espace de noms associé à la classe.
Dans la plupart des cas, vous n'aurez pas à vous soucier de référencer l'assembly nécessaire car les assemblys les plus courants sont référencés automatiquement. Toutefois, si vous devez utiliser un assembly spécialisé, vous devez ajouter explicitement une référence à l'assembly. Par exemple, si vous devez interagir avec Active Directory à l'aide des classes de l'espace de noms System.DirectoryServices, vous devrez ajouter une référence à l'assembly System.DirectoryServices.dll à votre application.
Chaque entrée de classe dans la documentation du SDK .NET Framework répertorie l'assembly et l'espace de noms associés à la classe. Par exemple, si vous recherchez la classe MessageQueue dans la documentation, vous découvrirez que cette classe se trouve dans l'espace de noms System.Messaging situé dans l'assembly System.Messaging.dll.
Si vous utilisez Visual Web Developer, vous pouvez ajouter une référence à un assembly de manière explicite en sélectionnant l'option de menu Website, Add Reference et en sélectionnant le nom de l'assembly que vous devez référencer. Par exemple, l'ajout d'une référence à l'assembly System.Messaging.dll entraîne l'ajout du fichier de configuration Web du listing 1.4 à votre application.
Par exemple. Web.Config
Si vous préférez ne pas utiliser Visual Web Developer, vous pouvez ajouter la référence à l'assembly System.Messaging.dll en créant manuellement le fichier dans l'exemple ci-dessus
la source
Wikipédia doit dire:
Si vous avez vraiment parcouru, il serait utile de clarifier ce que vous ne comprenez pas
la source
Voir ceci :
la source
collection physique de classe, interface, énum, etc. qui est en code IL. Qui peut être un fichier .EXE ou .DLL .EXE est un fichier exécutable et .DLL peut être utilisé dynamiquement dans n'importe quelle langue prise en charge par .net.
la source
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 n'a qu'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 se composer de plusieurs fichiers qui sont maintenus ensemble par un manifeste (c'est-à-dire une table des matières).
En C #, un assembly est le plus petit déploiement d'une application .Net. Il peut s'agir d'une dll ou d'une exe. Il a deux types: 1. Private Assembly 2. Public / Shared Assembly
la source
En plus de la réponse acceptée, je veux vous donner un exemple!
Par exemple, nous utilisons tous
Mais où est le code pour System.Console.WriteLine !?
quel est le code qui place le texte sur la console?
Si vous consultez la première page de la documentation de la classe Console , vous verrez en haut ce qui suit: Assembly: mscorlib (in mscorlib.dll) Ceci indique que le code de la classe Console se trouve dans un ensemble. nommé mscorlib. Un assembly peut être composé de 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 s'agit de la DLL principale pour les bibliothèques de classes dans .NET, et il contient toutes les classes et structures de base .NET.
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. Lors de la compilation, le compilateur C # accède directement au fichier mscorlib.dll et obtient des informations des métadonnées de ce fichier concernant toutes les classes et autres types qui y sont définis.
Le compilateur C # est capable d'établir que mscorlib.dll contient en effet une classe nommée Console dans un espace de noms nommé System avec une méthode nommée WriteLine qui accepte un seul argument de type chaîne.
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ède à mscorlib.dll, mais pour les autres DLL, vous devrez indiquer au compilateur l'assembly dans lequel se trouvent les classes. Ce sont des références.
J'espère que c'est clair maintenant!
De DotNetBookZero Charles pitzold
la source
MSDN a une bonne explication :
la source
Source: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4
Pour ceux qui ont des antécédents Java comme moi, j'espère que le diagramme suivant clarifie les concepts -
Les assemblys sont comme des fichiers jar (contenant plusieurs fichiers .class). Votre code peut référencer un assemblie existant ou votre code lui-même peut être publié en tant qu'assemblie pour un autre code à référencer et à utiliser (vous pouvez le penser 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 fourni peut s'exécuter sur n'importe quelle machine sur laquelle JVM est installée.
la source
Dans .Net, un assemblage peut être:
la source
L'assemblage est la plus petite unité de sécurité de version, de déploiement et de réutilisation de code dans Microsoft.Net.
Il contient:
la source
L'assemblage est la partie fondamentale de la programmation avec .NET Framework. Il contient du 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é.
la source
Les applications .NET sont construites en assemblant un nombre illimité d'assemblages. En termes simples, un assemblage n'est rien de plus qu'un binaire versionné et auto-descriptif (DLL ou EXE) contenant une collection de types (classes, interfaces, structures, etc.) et des recours facultatifs (images, tables de chaînes et ainsi de suite). Une chose dont il est douloureusement conscient en ce moment, c'est que l'organisation interne d'un assembly .NET ne ressemble en rien à l'organisation interne d'un serveur COM classique (quelles que soient les extensions de fichiers partagées).
la source
Dans .NET, lorsque nous compilons notre code source, l'assembly est généré dans Visual Studio. L'assemblage se compose de deux parties Manifest et IL (Intermediate Language). Le manifeste contient des métadonnées d'assembly: les exigences de version de l'assembly, l'identité de sécurité, les noms et les hachages de tous les fichiers qui composent l'assembly. IL contient des informations sur les classes, les constructeurs, la méthode principale, etc.
la source
J'ai trouvé ce lien très utile. Il vous donne même un aperçu de la façon dont IL joue un rôle dans .NET.
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
la source
Les solutions Visual Studio consistent en un ou plusieurs projets. Par exemple: les projets de console peuvent produire un assemblage . Un assembly est logiquement un morceau de code qui peut être expédié aux clients et physiquement un .EXE (programme exécutable) ou .DLL (sont réutilisables par d'autres programmes).
la source
Les assemblys contiennent des informations sur le contenu, la gestion des versions et les dépendances, les applications qui les utilisent n'ont pas besoin de s'appuyer sur des sources externes, telles que le registre sur les systèmes Windows, pour fonctionner correctement. Les assemblys réduisent les conflits .dll et rendent vos applications plus fiables et plus faciles à déployer.
C'est une collection de types et de ressources conçus pour fonctionner ensemble et former une unité logique de fonctionnalité. Les assemblys prennent la forme de fichiers exécutables (.exe) ou de bibliothèque de liens dynamiques (.dll) et constituent les blocs de construction des applications .NET. Ils fournissent au runtime de langage commun les informations dont il a besoin pour connaître les implémentations de type.
Chaque assembly possède un fichier manifeste d'assembly. Semblable à une table des matières, le manifeste d'assembly contient:
Pour utiliser un assembly dans une application, vous devez lui ajouter une référence. Une fois qu'un assembly est référencé, tous les types, propriétés, méthodes et autres membres accessibles de ses espaces de noms sont disponibles pour votre application comme si leur code faisait partie de votre fichier source.
Nous savons donc tous que notre code source est converti en langage intermédiaire Microsoft (MSIL). Au moment de l'exécution, CLR (Common Languge Runtime) convertit le MSIL en code natif avec le compilateur JIT. Avant de convertir le code MSIL doit passer un processus de vérification qui examine le MSIL + MetaData (nom des assemblys, version, références): pour savoir si le code peut être déterminé comme étant de type sécurisé. s'il passe la vérification, MSIL est converti en code natif. Toutes les méthodes appelées sont converties en langage machine et enregistrées dans le cache pour une utilisation ultérieure.
la source