web-dev-qa-db-ja.com

C#または.NETのアセンブリとは正確には何ですか?

C#または.NETのアセンブリとは何ですか?

  1. どこで始まり、どこで終わるのですか?
  2. アセンブリについて知っておくべき重要な情報は何ですか?
77
Roee Adler

アセンブリはコードのコンパイル済み出力であり、通常はDLLですが、EXEもアセンブリです。これは、あらゆる.NETプロジェクトの展開の最小単位です。

アセンブリには通常、MSIL(Microsoft Intermediate language)の.NETコードが含まれています。これは、特定のマシンで初めて実行されるときにネイティブコード(「JITted」-Just-In-Timeコンパイラーによってコンパイル)にコンパイルされます。コンパイルされたコードはアセンブリにも保存され、以降の呼び出しで再利用されます。

アセンブリには、アイコン、ビットマップ、文字列テーブルなどのリソースを含めることもできます。さらに、アセンブリのアセンブリマニフェストには、バージョン番号、厳密な名前、カルチャ、参照されるアセンブリなどのメタデータも含まれます。

99%のケースでは、1つのアセンブリがディスク上の物理ファイルに相当します。マルチファイルアセンブリ(1つのアセンブリ、複数のファイルに分散されている)の場合は、かなり奇妙なEdgeケースに見えます。 5年以上の.NET開発でこれまでに遭遇したことはありません。

マルチファイルアセンブリでは、DLLまたはEXEおよび複数のnetmoduleファイル内のMSILコードに1つのアセンブリマニフェストしかありません。

92
marc_s

。NETアセンブリ

Microsoft .NETフレームワークでは、アセンブリは、展開、バージョン管理、およびセキュリティで使用するために部分的にコンパイルされたコードライブラリです。

10
user151323

http://www.codeguru.com/columns/csharp_learning/article.php/c5845

アセンブリは、すべての.NETアプリケーションが正常にコンパイルされると、コンパイラによって自動的に生成されるファイルです。ダイナミックリンクライブラリまたは実行可能ファイルのいずれかです。これは、アプリケーションに対して1回だけ生成され、その後のコンパイルごとにアセンブリが更新されます。

7
Raghav

Here's .NETアセンブリの構成の別の説明、ミニクォート:

.NETフレームワークは、メタデータとマニフェスト情報の両方を保存するモジュール、アセンブリの概念で構成されています。アセンブリには複数のモジュールを含めることができます。 Visual C#は、C#コンパイラ(csc.exe)によってアセンブリに変換されるモジュールを1つしか作成しませんが、アセンブリは、アセンブリリンカー(al.exe)コマンドラインツールを介して多くの.NETモジュールをリンクできます。たとえば、ソースコードの各.csファイルをモジュールにコンパイルし、リンクしてアセンブリを形成することができます。アセンブリは、モジュールとリソースの単なるコレクションです。ただし、これらのモジュールの1つには、CLRがアセンブリを理解するためのマニフェストメタデータ(以下を参照)情報が含まれている必要があります。
....
VS.NET内に新しい.exeまたは.dllを作成すると、binフォルダー内にファイルが表示されます。それをメモ帳で開くと、意味がわからなくなったり、ファイルの構造を知らなくても16進エディターの内部でさえ、ildasm.exeやCFF Explorerなどのツールが必要です。アセンブリの構造は次のとおりです。

PEヘッダー
CLRヘッダー
CLRメタデータ
CLR
ILコード
ネイティブデータ

3
Chris S

ソースコードが言語コンパイラによってコンパイルされると、Managed AssemblyおよびMSIL(MisroSoft Intermediate Language)が生成されます。そのアセンブリには。dllまたは.exeファイルが含まれます。 Assebmlyには、2つのタイププライベートアセンブリおよび共有アセンブリがあります。共有アセンブリはGAC(グローバルアセンブリキャッシュ)に格納されるため、どのアプリケーションでもプライベートアセンブリは、1つのアプリケーションのみが使用できるアプリケーションフォルダーに格納されている間に参照します。

1
gaurav patni

アセンブリはDLLまたはEXEであり、発行またはアプリケーションのコンパイル時に作成されます。

0
Anup Shetty