2013-11-22 11 views
5

静的アセンブリと動的アセンブリの違いは何ですか?プログラム実行中にファイルからロードでき、別のファイルを作成できるという事実だけです。アセンブリのタイプ - 違いは何ですか

+2

良い質問!シンプルですが、たくさん扱われませんでした! –

答えて

6

スタティックアセンブリには、.NET Frameworkタイプ(インターフェイスとクラス)、アセンブリのリソース(ビットマップ、JPEGファイル、リソースファイルなど)が含まれます。静的アセンブリは、実行可能な実行可能ファイル(PE)でディスクに格納されます。また、.NET Frameworkを使用して、メモリから直接実行され、実行前にディスクに保存されない動的アセンブリを作成することもできます。動的アセンブリは、実行後にディスクに保存できます。

静的アセンブリは、ディスクに永続的に格納されるアセンブリです。 .NET Frameworkクラス、インターフェイス、およびリソースファイルが含まれます。これらのアセンブリは、CLR(Common Language RunTime)が要求したときに直接ディスクからロードされるのではなく、メモリから直接ロードされません。これらのアセンブリは、ファイルまたはファイルのセットとしてディスクに格納するために使用されました。 C#コードをコンパイルするたびに、STATICアセンブリが取得されます。

ダイナミックアセンブリは、実行前にディスクに格納されておらず、実行後にディスクに格納されるアセンブリです。 .NETランタイムがそれらを呼び出すと、ディスクからではなくメモリから直接ロードされます。 Reflectionは、動的アセンブリを作成するための多くの方法を提供します。これらはSystem.Reflection.emit名前空間を使用してメモリに作成されます。System.Reflection.Emit名前空間には、コンパイラまたはツールでメタデータとMicrosoft中間言語(MSIL)必要に応じてディスク上にPEファイルを生成します。アプリケーションでこれらのアセンブリ内の型が必要な場合、これらの動的アセンブリは実行時に動的に作成されます

簡単に言えば、静的アセンブリは、毎日相互作用している通常のアセンブリをロードします。ダイナミックアセンブリリフレクションと呼び出しを伴って作成します。

情報ソース:http://www.dotnetheaven.com/article/static-assembly-vs-dynamic-assembly-in-csharpおよびMSDN

+1

私は 'System.Reflection.Emit'を読み込んで動作させようとしています - step-bystepチュートリアルを使ってapp-resultを持つクラスを作成し、' AppDomain.DefineDynamicAssembly( ) 'と' AssemblyBuilderAccess ' - 反映、実行、RunANdSave、保存を使用しようとしています今、私はそれを保存します - lib(* .dllファイル)を持っていますが、 – gbk

関連する問題