2012-05-10 12 views
2

.NETランタイムアーキテクチャと構造に興味があります。私はそれがどのようにステップバイステップで動作するかを知りたい。私はいくつかの本を持って、また、いくつかの答えをGoogleで探していますが、今、私はいくつかの質問について正しい答えが欲しいです。 1. PEヘッダー 2. CLRヘッダー 3.メタデータの 4. ILコード.NET CSC.EXE出力ファイル形式

とコンパイル後に、ツールを:含まれ、CSC.exe(コンパイラ)は、管理モジュールを生成、という書かれた本で

AL.exe(アセンブリリンカー)は、そのモジュールをアセンブリにマージします。 私も知っているアセンブリは、DLLまたはEXEという2つのメインファイル拡張子を持っています。

しかし、私はManagedモジュールに興味があります。コンパイラのコンパイル方法とそのファイル形式についてそれは.netmodule拡張ですか? OR DLL?

p.s 私の英語のために申し訳ありません。

+1

ECMA335をお読みください。楽しく有益です。 – leppie

+0

http://www.ecma-international.org/publications/standards/Ecma-335.htm –

+1

人はいません。私はILコードなどを理解しました。私の質問は、Managedモジュールの拡張です。いつか私はそれを読んで、モジュールとアセンブリは同じ拡張子(DLL)を持っています。いつか私はそれを読んで、モジュールは.netmoduleの拡張子を持っています。いくつかのあいまいさがあります。ファイル拡張子にはモジュールがあります(Managedモジュール)。 私たちは知っている、マネージモジュールは4つの主なポイントを持っています: 1. PEヘッダー; 2. CLRヘッダー。 3.メタデータ。 4. ILコード。 しかし、物理的に管理されるモジュールとは何ですか。言語コンパイラが高水準コードからそれを作成するとき、どのような拡張機能がありますか? –

答えて

1

管理されたモジュールは、フォーマットが.DLL/.EXEと同じです(両方ともPE形式で、PEヘッダー+ CLRヘッダー+メタデータ+コードを含みます)。 違いは、マルチモジュールアセンブリを実行している場合に.netmoduleを作成することです。マルチモジュールアセンブリは、内部に複数のモジュールを持つアセンブリです。System.Data.dllは、マネージドコンポーネントとネイティブC++パーツの両方を1つのアセンブリに持つため、その例です。

.NetModuleは、複数のモジュールを1つのアセンブリにまとめる便利な方法です。高レベルのコンパイラ(C#のような)はそれを扱わないので、アセンブリリンカツール(AL)を使用する必要があります。

希望します。 ありがとう