回答:
より簡単に言うと、.NETランタイム環境で実行できる(プリコンパイルされた)コードのチャンクです。.NETプログラムは、1つ以上のアセンブリで構成されています。
.class
Javaの世界のファイルのようなものですか?
アセンブリは、.netアプリケーションのデプロイメントの最小単位です。これはdllまたはexeです。
主に2つのタイプがあります。
プライベートアセンブリ: 1つのアプリケーションのみの唯一のプロパティであるdllまたはexe。通常、アプリケーションのルートフォルダーに格納されます
パブリック/共有アセンブリ: 一度に複数のアプリケーションで使用できるDLLです。共有アセンブリはGAC、つまりグローバルアセンブリキャッシュに格納されます。
難しいですね。Naa ....
GACは単にC:\ Windows \ Assemblyフォルダーであり、PCにインストールされているすべてのソフトウェアのパブリックアセンブリ/ dllを見つけることができます。
また、3番目に知られていないタイプのアセンブリもあります。サテライトアセンブリです。
サテライトアセンブリには、画像などの静的オブジェクトと、アプリケーションに必要なその他の実行不可能なファイルのみが含まれています。
これが読者の役に立つことを願っています!
アセンブリ
アプリケーションをコンパイルすると、作成されたMSILコードはアセンブリに格納されます。アセンブリには、他のプログラムを必要とせずにWindowsから直接実行できる実行可能アプリケーションファイル(ファイル拡張子は.exe)と、他のアプリケーションで使用するためのライブラリ(拡張子が.dll)の両方が含まれます。
MSILに加えて、アセンブリにはメタ情報(つまり、アセンブリに含まれる情報に関する情報。メタデータとも呼ばれます)およびオプションのリソース(サウンドファイルや画像など、MSILが使用する追加データ)も含まれます。メタ情報により、アセンブリを完全に自己記述的にすることができます。アセンブリを使用するために他の情報は必要ありません。つまり、必要なデータをシステムレジストリに追加できないなどの状況を回避します。これは、他のプラットフォームで開発するときにしばしば問題でした。
つまり、アプリケーションのデプロイは、多くの場合、ファイルをリモートコンピュータのディレクトリにコピーするのと同じくらい簡単です。ターゲットシステムでは追加情報は必要ないため、このディレクトリから実行可能ファイルを実行するだけで済みます(.NET CLRがインストールされている場合)。
もちろん、アプリケーションを1か所で実行するために必要なすべてを必ずしも含める必要はありません。複数のアプリケーションが必要とするタスクを実行するコードを記述する場合があります。このような状況では、多くの場合、すべてのアプリケーションがアクセスできる場所に再利用可能なコードを配置すると便利です。.NET Frameworkでは、これはグローバルアセンブリキャッシュ(GAC)です。コードをGACに配置するのは簡単です。コードを含むアセンブリを、このキャッシュを含むディレクトリに配置するだけです。
アセンブリは、.NET Frameworkのクラスが格納されているハードドライブ上の実際の.dllファイルです。たとえば、ASP.NET Frameworkに含まれるすべてのクラスは、System.Web.dllという名前のアセンブリにあります。
より正確には、アセンブリは、.NET Frameworkの展開、セキュリティ、およびバージョン管理の主要な単位です。アセンブリは複数のファイルにまたがることができるため、アセンブリは「論理」dllと呼ばれることがよくあります。
注意
.NET Framework(バージョン2.0)には51のアセンブリが含まれています。
アセンブリには、プライベートと共有の2つのタイプがあります。プライベートアセンブリは、単一のアプリケーションでのみ使用できます。一方、共有アセンブリは、同じサーバー上にあるすべてのアプリケーションで使用できます。
共有アセンブリは、グローバルアセンブリキャッシュ(GAC)にあります。たとえば、System.Web.dllアセンブリと、.NET Frameworkに含まれている他のすべてのアセンブリは、グローバルアセンブリキャッシュにあります。
注意
グローバルアセンブリキャッシュは、物理的にコンピューターの\ WINDOWS \ Assemblyフォルダーにあります。\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727フォルダーには、すべてのアセンブリの個別のコピーがあります。アセンブリの最初のセットは実行時に使用され、2番目のセットはコンパイル時に使用されます。
アプリケーションのアセンブリに含まれるクラスを使用する前に、アセンブリへの参照を追加する必要があります。デフォルトでは、ASP.NETアプリケーションは、グローバルアセンブリキャッシュに含まれる最も一般的なアセンブリを参照します。
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
.NET Frameworkで特定のクラスを使用するには、2つのことを行う必要があります。最初に、アプリケーションはクラスを含むアセンブリを参照する必要があります。次に、アプリケーションはクラスに関連付けられた名前空間をインポートする必要があります。
ほとんどの場合、最も一般的なアセンブリは自動的に参照されるため、必要なアセンブリの参照について心配する必要はありません。ただし、特殊なアセンブリを使用する必要がある場合は、アセンブリに参照を明示的に追加する必要があります。たとえば、System.DirectoryServices名前空間のクラスを使用してActive Directoryとやり取りする必要がある場合は、System.DirectoryServices.dllアセンブリへの参照をアプリケーションに追加する必要があります。
.NET Framework SDKドキュメントの各クラスエントリには、クラスに関連付けられているアセンブリと名前空間がリストされています。たとえば、ドキュメントでMessageQueueクラスを検索すると、このクラスがSystem.Messaging.dllアセンブリにあるSystem.Messaging名前空間にあることがわかります。
Visual Web Developerを使用している場合は、メニューオプションの[Webサイト]、[参照の追加]を選択し、参照する必要のあるアセンブリの名前を選択することで、アセンブリへの参照を明示的に追加できます。たとえば、System.Messaging.dllアセンブリへの参照を追加すると、リスト1.4のWeb構成ファイルがアプリケーションに追加されます。
例えば。Web.Config
enter code here
Visual Web Developerを使用しない場合は、上記の例のファイルを手動で作成して、System.Messaging.dllアセンブリへの参照を追加できます。
ウィキペディアは言う必要があります:
Microsoft .NETフレームワークでは、アセンブリは、展開、バージョン管理、およびセキュリティで使用するために部分的にコンパイルされたコードライブラリです。プロセスアセンブリ(EXE)とライブラリアセンブリ(DLL)の2つのタイプがあります。プロセスアセンブリは、ライブラリアセンブリで定義されたクラスを使用するプロセスを表します。.NETアセンブリにはCILのコードが含まれています。これは通常CLI言語から生成され、CLRジャストインタイムコンパイラーによって実行時にマシン言語にコンパイルされます。アセンブリは、1つ以上のファイルで構成できます。コードファイルはモジュールと呼ばれます。アセンブリには複数のコードモジュールを含めることができ、異なる言語を使用してコードモジュールを作成することができるため、技術的には複数の異なる言語を使用してアセンブリを作成できます。
あなたが本当に閲覧したなら、あなたが理解していないことを明確にすると助けになるでしょう
アセンブリは、タイプやその他のリソースで構成されるランタイムユニットです。アセンブリ内のすべてのタイプのバージョン番号は同じです。
多くの場合、1つのアセンブリには名前空間が1つしかなく、1つのプログラムによって使用されます。ただし、複数の名前空間にまたがることがあります。また、1つの名前空間が複数のアセンブリに分散する場合もあります。大規模な設計では、アセンブリは、マニフェスト(つまり、目次)によってまとめられた複数のファイルで構成される場合があります。
C#では、アセンブリは.Netアプリケーションの最小のデプロイメントです。dllまたはexeを使用できます。2つのタイプがあります。1.プライベートアセンブリ2.パブリック/共有アセンブリ
受け入れられた答えに加えて、私はあなたに例を挙げたいです!
たとえば、私たちはすべて使用します
System.Console.WriteLine()
しかし、System.Console.WriteLine!のコードはどこにありますか?
実際にコンソールにテキストを配置するコードはどれですか?
Consoleクラスのドキュメントの最初のページを見ると、上部付近に以下が表示されます。アセンブリ:mscorlib(mscorlib.dll内)これは、Consoleクラスのコードがassem-blyにあることを示していますmscorlibという名前です。アセンブリは複数のファイルで構成できますが、この場合はダイナミックリンクライブラリmscorlib.dllの1つのファイルのみです。
mscorlib.dllファイルは.NETで非常に重要であり、.NETのクラスライブラリのメインDLLであり、すべての基本的な.NETクラスと構造が含まれています。
CまたはC ++を知っている場合は、通常、ヘッダーファイルを参照する#includeディレクティブが先頭に必要です。インクルードファイルは、関数プロトタイプをコンパイラに提供します。対照的に、C#コンパイラはヘッダーファイルを必要としません。コンパイル中に、C#コンパイラはmscorlib.dllファイルに直接アクセスし、そのファイル内のメタデータから、そこで定義されているすべてのクラスとその他の型に関する情報を取得します。
C#コンパイラは、mscorlib.dllが実際にSystemという名前空間にConsoleという名前のクラスを含み、文字列型の単一の引数を受け入れるWriteLineという名前のメソッドを持つことを確立できます。
C#コンパイラはWriteLine呼び出しが有効であると判断でき、コンパイラは実行可能ファイル内のmscorlibアセンブリへの参照を確立します。
デフォルトでは、C#コンパイラはmscorlib.dllにアクセスしますが、他のDLLの場合は、クラスが配置されているアセンブリをコンパイラに通知する必要があります。これらは参照として知られています。
はっきりしているといいですね!
DotNetBookZero Charles pitzoldから
アセンブリは、機能の論理ユニットを形成するタイプとリソースのコレクションです。.NET Frameworkのすべての型はアセンブリに存在する必要があります。共通言語ランタイムは、アセンブリ外の型をサポートしていません。Visual Basic .NETでMicrosoftWindows®アプリケーション、Windowsサービス、クラスライブラリ、またはその他のアプリケーションを作成するたびに、単一のアセンブリを構築します。各アセンブリは、.exeまたは.dllファイルとして保存されます。
ソース:https : //msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4
私のようなJavaの背景を持つ人のために、次の図が概念を明確にすることを願っています-
アセンブリは、jarファイル(複数の.classファイルを含む)に似ています。コードは既存のアセンブリを参照することも、コード自体を他のコードが参照して使用するためのアセンブリとして公開することもできます(これは、プロジェクトの依存関係に追加できるJavaのjarファイルと考えることができます)。
結局のところ、アセンブリは、CLRがインストールされている任意のオペレーティングシステムで実行できるコンパイル済みコードです。これは、.classファイルまたはバンドルされたjarが、JVMがインストールされている任意のマシンで実行できると言うのと同じです。
このリンクは非常に役に立ちました。また、ILが.NETでどのように役割を果たすかを垣間見ることもできます。
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
Visual Studioソリューションは、1つ以上のプロジェクトで構成されています。例:コンソールプロジェクトはアセンブリを生成できます。アセンブリは、顧客に出荷できる論理的にはコードのチャンクであり、物理的には.EXE(実行可能プログラム)または.DLL(他のプログラムで再利用可能)です。