Assembly DLL EXE in .NET Framework

Assembly DLL EXE in .NET Framework

Assemblaggio EXE DLL in .NET Framework

In questo articolo parlerò di Assembly DLL ed EXE in .NET Framework con esempi. Leggi il nostro articolo precedente in cui abbiamo discusso del Codice gestito e non gestito in C#.NET Applicazione. Come parte di questo articolo, discuteremo in dettaglio i seguenti suggerimenti.

  1. Cos'è un assembly in .NET?
  2. Tipi di assembly in .NET Framework.
  3. Comprensione di DLL ed EXE.
  4. Qual ​​è la differenza tra la DLL e l'EXE in .NET Framework?
Che cos'è un assembly in .NET?

Secondo MSDN, gli assembly sono l'elemento costitutivo delle applicazioni .NET Framework; costituiscono l'unità fondamentale di schieramento. In parole semplici, possiamo dire che Assembly non è altro che un codice .NET precompilato che può essere eseguito da CLR (Common Language Runtime).

Comprendiamo la definizione di cui sopra con un esempio. Per capirlo, creiamo una semplice applicazione console con il nome MyConsoleApp. Dopo aver creato l'applicazione console, modificare la classe Program come mostrato di seguito.

using System;
namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("This is From Console App");
            Console.ReadKey();
        }
    }
}

Ora, se fai clic con il pulsante destro del mouse sul tuo progetto e fai clic su Apri cartella in Esplora file, troverai molte cose (codice sorgente, ad esempio file di classe Program.cs, configurazione ad es. App, cartella Proprietà che contiene il file di classe AssemblyInfo.cs, ecc.) come mostrato nell'immagine sottostante.

Ma quando crei l'applicazione, metterà tutto in un unico EXE come mostrato nell'immagine qui sotto. Puoi trovare questo file in bin => Debug cartella. Puoi copiare questa singola unità, ad esempio MyConsoleApp.exe e metterla ovunque sul tuo computer e da lì eseguirla.

Quindi, un assembly non è altro che una singola unità di distribuzione o è un blocco di codice precompilato che può essere eseguito da CLR. Per una migliore comprensione, dai un'occhiata al diagramma seguente.

Tipi di assembly in .NET Framework:

In .NET Framework sono disponibili due tipi di assembly. Sono i seguenti:

  1. EXE (eseguibile)
  2. DLL (libreria di collegamento dinamico)

In .NET Framework, quando compiliamo un'applicazione console o un'applicazione Windows, genera EXE, mentre quando compiliamo un progetto libreria di classi o un'applicazione Web ASP.NET, genera DLL. In.NET Framework, sia EXE che DLL sono chiamati assembly.

Comprendere DLL ed EXE in .NET Framework:

Abbiamo già creato un'applicazione console e vediamo già che crea un EXE. Vediamo un esempio di DLL. Per creare una DLL, aggiungiamo un progetto di libreria di classi alla stessa soluzione con il nome di MyClassLibrary. Dopo aver creato il progetto della libreria di classi, per impostazione predefinita verrà creato un file di classe con il nome Class1. Modifichiamo Class1 come mostrato di seguito.

namespace MyClassLibrary
{
    public class Class1
    {
        public string GetData()
        {
            return "This is from Class Library";
        }
    }
}

Con questo, ora la nostra soluzione contiene due progetti. Uno è un'applicazione console e l'altro è un progetto di libreria di classi come mostrato di seguito.

Ora, costruisci la soluzione e dovresti ottenere gli assembly rispettati come previsto nella loro cartella bin => Debug. Ora, la domanda che ti dovrebbe venire in mente è qual è la differenza tra la DLL e l'EXE?

Qual ​​è la differenza tra la DLL e l'EXE in .NET Framework?

L'EXE viene eseguito nel proprio spazio di indirizzi o nel proprio spazio di memoria. Se fai doppio clic su MyConsoleApp EXE, otterrai il seguente output. Ora, questo programma sta esaurendo il proprio spazio di memoria.

Senza chiudere questa finestra, di nuovo se fai doppio clic su MyConsoleApp EXE, di nuovo verrà eseguito e visualizzerà lo stesso output. Questo perché ora entrambi gli EXE sono in esecuzione nel proprio spazio di memoria. Il punto che devi ricordare è che EXE è un file eseguibile e può essere eseguito da solo come un'applicazione.

Venendo a DLL, non può essere eseguito da solo come EXE. Ciò significa MyClassLibrary.dll non può essere invocato o eseguito da solo. Ha bisogno di un consumatore che lo invochi. Quindi, una DLL viene eseguita all'interno di un altro spazio di memoria. L'altro spazio di memoria può essere una console, applicazioni Windows o applicazioni Web che dovrebbero avere il proprio spazio di memoria.

Ad esempio, puoi richiamare la DLL da un'applicazione console. Abbiamo una console chiamata MyConsoleApp e vediamo come invocare MyClassLibrary.dll da questa applicazione console. Per utilizzare MyClassLibrary.dll all'interno di MyConsoleApp, è necessario innanzitutto fare riferimento a tale DLL. Dopo aver aggiunto un riferimento a MyClassLibrary DLL, quindi modificare la classe Programma dell'applicazione Console come mostrato di seguito.

using System;
using MyClassLibrary;
namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //Using MyClassLibrary DLL
            Class1 obj = new Class1();
            Console.WriteLine(obj.GetData());

            Console.WriteLine("This is From Console App");
            Console.ReadKey();
        }
    }
}

Ora, esegui l'applicazione e dovresti vedere il seguente output. Qui, la DLL MyClassLibrary viene eseguita all'interno dello spazio degli indirizzi MyConsoleApp.

Quindi, in breve, la differenza tra loro è che un EXE è un file eseguibile e può essere eseguito da solo come un'applicazione mentre la DLL viene solitamente utilizzata da un EXE o da un'altra DLL e non possiamo eseguire o eseguire DLL direttamente.

Ora, la domanda che dovrebbe sorgere nella tua mente, perché abbiamo bisogno delle DLL in quanto non vengono invocate da sole. Il motivo alla base della DLL è la riutilizzabilità. Supponiamo di volere una classe, una logica o qualcos'altro in molte applicazioni, quindi inserire semplicemente quelle classi e la logica all'interno di una DLL e fare riferimento a quella DLL ovunque sia richiesta.

Per oggi è tutto. Nel prossimo articolo parlerò di App Domain in .NET Framework in dettaglio. Qui, in questo articolo, provo a spiegare Assembly DLL EXE in .NET Framework in dettaglio con esempi. Spero che questo articolo vi piaccia e che abbiate un'idea migliore di questi tre concetti.