.NET Framework のアセンブリ DLL EXE

.NET Framework での DLL EXE のアセンブリ

この記事では、アセンブリ DLL と EXE について説明します .NET Framework 例を示します。 C#.NET のマネージド コードとアンマネージド コードについて説明した前回の記事をお読みください。 応用。この記事の一部として、以下のポイントについて詳しく説明します。

<オール>
  • .NET のアセンブリとは?
  • .NET Framework のアセンブリの種類
  • DLL と EXE について理解する。
  • .NET Framework の DLL と EXE の違いは何ですか?
  • .NET のアセンブリとは

    MSDN によると、アセンブリは .NET Framework アプリケーションの構成要素です。それらは展開の基本単位を形成します。簡単に言えば、アセンブリは、CLR (共通言語ランタイム) で実行できるコンパイル済みの .NET コードに他ならない、と言えます。

    上の定義を例で理解してみましょう。これを理解するために、MyConsoleApp という名前の単純なコンソール アプリケーションを作成してみましょう。コンソール アプリケーションを作成したら、次に示すように Program クラスを変更してください。

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

    プロジェクトを右クリックし、ファイル エクスプローラーで [フォルダーを開く] をクリックすると、多くの情報が表示されます (ソース コード、つまり Program.cs クラス ファイル、構成下の画像に示すように、App、AssemblyInfo.cs クラス ファイルを含む Properties フォルダーなど)。

    しかし、アプリケーションをビルドすると、下の画像に示すように、すべてが 1 つの EXE にまとめられます。このファイルは bin => Debug にあります。 フォルダ。この単一のユニット、つまり MyConsoleApp.exe をコピーして、コンピューターの任意の場所に配置し、そこから実行できます。

    つまり、アセンブリは配置の 1 つの単位にすぎないか、CLR で実行できるコンパイル済みのコードの塊です。理解を深めるために、次の図をご覧ください。

    .NET Framework のアセンブリの種類:

    .NET Framework には、2 種類のアセンブリがあります。それらは次のとおりです:

    1. EXE (実行可能ファイル)
    2. DLL (ダイナミック リンク ライブラリ)

    .NET Framework では、コンソール アプリケーションまたは Windows アプリケーションをコンパイルすると EXE が生成されますが、クラス ライブラリ プロジェクトまたは ASP.NET Web アプリケーションをコンパイルすると、EXE が生成されます。 DLL。 .NET フレームワークでは、EXE と DLL の両方がアセンブリと呼ばれます。

    .NET Framework の DLL と EXE について:

    既に 1 つのコンソール アプリケーションを作成しており、それが EXE を作成することが既に確認されています。 DLL の例を見てみましょう。 DLL を作成するために、MyClassLibrary という名前のクラス ライブラリ プロジェクトを同じソリューションに追加しましょう。クラス ライブラリ プロジェクトを作成すると、デフォルトで Class1 という名前のクラス ファイルが作成されます。以下に示すように Class1 を変更しましょう。

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

    これで、ソリューションに 2 つのプロジェクトが含まれるようになりました。 1 つはコンソール アプリケーションで、もう 1 つは以下に示すクラス ライブラリ プロジェクトです。

    ここで、ソリューションをビルドすると、独自の bin => Debug フォルダーで期待どおりに尊重されたアセンブリを取得する必要があります。ここで、DLL と EXE の違いは何ですか?

    .NET Framework の DLL と EXE の違いは何ですか?

    EXE は、独自のアドレス空間または独自のメモリ空間で実行されます。 MyConsoleApp EXE をダブルクリックすると、次の出力が得られます。現在、このプログラムは独自のメモリ空間を使い果たしています.

    このウィンドウを閉じずに、再び MyConsoleApp EXE をダブルクリックすると実行され、同じ出力が表示されます。これは、両方の EXE が独自のメモリ空間で実行されているためです。覚えておく必要がある点は、EXE は実行可能ファイルであり、アプリケーションとして単独で実行できるということです。

    DLL になると、EXE のように単独で実行することはできません。つまり、MyClassLibrary.dll 自分で呼び出したり実行したりすることはできません。それを呼び出す消費者が必要です。したがって、DLL は別のメモリ空間内で実行されます。他のメモリ スペースは、コンソール、Windows アプリケーション、または独自のメモリ スペースを持つ Web アプリケーションにすることができます。

    たとえば、コンソール アプリケーションから DLL を呼び出すことができます。 MyConsoleApp というコンソールがあり、このコンソール アプリケーションから MyClassLibrary.dll を呼び出す方法を見てみましょう。 MyConsoleApp 内で MyClassLibrary.dll を使用するには、まず、その DLL への参照を作成する必要があります。 MyClassLibrary DLL への参照を追加したら、コンソール アプリケーションの Program クラスを以下のように変更してください。

    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();
            }
        }
    }
    

    アプリケーションを実行すると、次の出力が表示されます。ここで、MyClassLibrary DLL は MyConsoleApp アドレス空間内で実行されます。

    要するに、これらの違いは、EXE は実行可能ファイルであり、アプリケーションとして単独で実行できるのに対し、DLL は通常、EXE または別の DLL によって消費され、 DLL を直接実行または実行することはできません。

    ここで、DLL 自体は呼び出されないのに、なぜ DLL が必要なのかという疑問が頭に浮かびます。 DLL の背後にある理由は再利用性です。多くのアプリケーションで何らかのクラス、ロジック、またはその他の何かが必要だとすると、それらのクラスとロジックを DLL 内に配置し、必要な場所でその DLL を参照するだけです。

    今日はここまでです。次の記事では、.NET Framework のアプリ ドメインについて説明します。 詳細に。ここで、この記事では、.NET Framework のアセンブリ DLL EXE について説明してみます。 例を挙げて詳しく説明します。この記事を楽しんで、これら 3 つの概念について理解を深めていただければ幸いです。