2017-05-27 16 views
1

基本的に私は、Visual Studioで参照を任意の.dllファイルに追加すると、このDLLが実行可能ファイルに埋め込まれることになりますか?ない場合はどのように実行可能ファイルは、これらのdllファイルを検索する場所を知っているん:dllファイルは参照された後で実行可能ファイルに埋め込まれていますか?

Reference to dll files

+0

いいえこれはフレームワークアセンブリです。 CLRは、GAC、c:\ windows \ microsoft.net \ assemblyの中でそれらを見つける方法を知っています –

答えて

2

アセンブリが埋め込まれていません。

厳密に名前の付いていないアセンブリを参照すると、実行可能ファイルが格納されているフォルダにコピーされます(他の場所にアセンブリを配置することもできます)。 CLRは、実行可能ファイルを含むフォルダまたはCLRで検索するように設定できる他のフォルダ内のこのアセンブリを検索します。

厳密な名前のアセンブリを参照すると、CLRは同じ方法でこのアセンブリを探します厳密に名前のついたアセンブリではなく、さらにグローバルアセンブリキャッシュ(GAC-MSDN - GAC)も検索されます。

+0

厳密な名前のアセンブリへの参照は、アプリケーションのローカルフォルダも検索します。GACに入れる必要はありませんそれが利用可能であるために。 –

+0

@Lasse V. Karlsen、thanks、編集済み –

0

ライブラリは、動的と静的の2つの主な方法で実行可能ファイルにリンクできます。

動的に実行可能ファイルには、ライブラリに依存することを宣言する実行可能ファイルにタグが含まれます。オペレーティング・システムまたはランタイム環境は、ライブラリーがシステムにインストールされていることを前提に、そのライブラリーを検索します。このようなライブラリを使用している場合は、アプリケーションの配布時にシステムにインストールされていることを確認できるように、.NET、Visual Studio、サードパーティなどのどこから来たのかを知る必要があります。一般に、実行可能ファイル(Windowsの場合)と同じフォルダにライブラリを含めることで、ライブラリのバージョンを使用していることを保証できますが、通常は既にライブラリにある可能性が高いライブラリに対しては行いたくありませんシステム。

静的には、ライブラリが実行可能ファイルにコンパイルされていることを意味します。実行可能ファイルははるかに大きくなり、プログラムを作成したライブラリのバージョンで作業することが保証されますが、すべてのライブラリを静的に使用できるわけではありません。

DLLは言い換えればダイナミックリンクライブラリを意味するので、使用するライブラリがどこにあるかを知る必要があるため、アプリケーションを実行するシステム上にそれらが存在することを確認する必要があります。

関連する問題