2009-09-01 10 views
46

C#または.NETのアセンブリについて説明してください。C#または.NETのアセンブリとは何ですか?

  1. どこから始まり、どこで終了するのですか?
  2. アセンブリに関する重要な情報を教えてください。マイクロソフト.NETフレームワークで
+2

厳密に言えば、アセンブリではなく、C#の概念ではなく.NETの概念ですか? – JeffH

+2

@JeffH:私が質問したとき、私はそれがC#コンセプトだと思った。今私はそれが.NETのものだと理解しています。それにもかかわらず、私は他の人が私のように混乱するかもしれないと思うので、意図的にGoogleがこのミスに対処するためにそれを変更していないと思います... –

+0

'exe'または' dll' –

答えて

65

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

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

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

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

マルチファイルアセンブリでは、DLLまたはEXEにアセンブリマニフェストが1つしかなく、複数のnetmoduleファイルにMSILコードが存在します。

+1

@marc_s:アセンブリファイル。スタジオのコマンドラインツールを使用して単一のファイルに複数のアセンブリをパッケージ化することは可能ですが、IDE経由で直接行うことはできません。 –

+4

アセンブリで非常に重要なことは、アセンブリマニフェストのメタデータです。マニフェストには、バージョン、強力な名前、カルチャ、参照されているアセンブリなどの情報があります。マルチファイルアセンブリでは、dllまたはexeにアセンブリマニフェストが1つのみあり、複数の.netmoduleファイルにMSILコードがあります。基本的にアセンブリは>ネット内の配備の最小単位です – softveda

+0

@marc_s:回答に@Pratikの点を追加していただければ幸いです。 –

8

.NET assembly

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

4

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

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

+1

アセンブリは、アセンブリを含むファイルとは異なります。 –

+1

@Raghav - あなたの写真を天国のためにカジュアルなものにアップデートしましょう!私たちはここでパスポートのポーズをとっているわけではありません。 –

2

Here's .NETアセンブリのメイクアップの別の説明は、ミニ引用:.NETフレームワークは、モジュールの 概念、アセンブリ、 ストアメタデータとマニフェスト 情報の両方から成る

。アセンブリには、複数のモジュールが含まれています( )。ビジュアルC#は今まで C#コンパイラ (csc.exe)でアセンブリに になっている一つのモジュールを作成しますが、アセンブリは アセンブリリンカ(al.exe)コマンドライン を介して一緒に 多くの.NETモジュールをリンクすることができますツール。たとえば、ソース コード.csファイルをそれぞれ モジュールにコンパイルし、一緒にリンクして というアセンブリを作成することができます。アセンブリはモジュールとリソースの集まりである です。 しかし、これらのモジュールのうちの1つは、 にはマニフェストメタデータ(下記参照) が含まれていなければなりません。この情報は、CLRによって理解された です。
....
VS.NET内に新しい.exeまたは.dll を作成すると、ファイルが というbinフォルダ内に表示されます。 メモ帳で開くと、ちんぷんかんぷんを与える、または でも ファイルの構造を知らなくても、進エディタ の内側に、あなたは からそれを意味するためにIldasm.exeを またはCFFエクスプローラのようなツールが必要になります。アセンブリの構造は、以下のように がある:

PEヘッダ
CLRヘッダ
CLRメタデータ
CLR
ILコード
ネイティブデータソースコードでコンパイルされ

0

言語コンパイラ管理アセンブリとMSIL(MisroSoft Intermediate Language)を生成します。そのアセンブリには.dllまたは.exeファイルが含まれています。 Assebmlyは、2つのタイププライベートアセンブリ共有アセンブリとすることができ、プライベートアセンブリを使用することができるアプリケーションフォルダに格納されている間、任意のアプリケーションがそれを参照することができるようにアセンブリがGAC(グローバルアセンブリキャッシュ)に記憶される共有1つのアプリケーションのみ。

0

アセンブリは、DLLを公開するか、アプリケーションをコンパイルするときに作成されるEXEです。

関連する問題