【VB】クラスライブラリ(.dll)の作成・使用方法② dllの配置場所を変更する

このエントリーをはてなブックマークに追加

前回の続きです。
前回でクラスライブラリの作成&利用方法は備忘録として書きましたので、ここでは作成したexeファイルとdllファイルのフォルダ配置方法(インストール方法)について追加で覚え書きします。

通常、作成したexeファイルとdllファイルは同じフォルダに置かれています。~SampleProject\SampleProject\bin\Debugのフォルダを見てみると、SampleLibrary.dllとSampleProject.exeが一緒になって置かれています。

~SampleProject\SampleProject\bin\Debugのフォルダに、dllとexeが一緒に置かれている

独自に作成したクラスライブラリを使用する場合、exeを起動させるためには、作成したdllが同じフォルダに置かれてある必要があります。SampleLibrary.dllを移動なり削除なりさせると、SampleProject.exeが正常に起動しなくなってしまいます。
ここで前回の②-(6)で設定した『ローカルコピー』の設定項目について触れますが、あれは、exeの作成と同時にdllを同じフォルダにコピーするという設定です。この『ローカルコピー』がFalseだと、独自に作成したdllがコピーされず、exeが正常に起動しませんので、ここは常にTrueにしておくといいでしょう。

以上のことから、dllとexeは同じフォルダに置いておくのが基本です。ですが時には、この二つを別々のフォルダに分けたいという場合もあるかもしれません。プロジェクト内のあるファイルを設定することで、exeファイルが置かれたフォルダよりも下のフォルダからdllを読み込めるようになります。

1)exeのあるフォルダの中に、『DLL』というサブフォルダを作成し、そこにSampleLibrary.dllを移動させます。ここからdllを読み込むように設定を行ってみます。(この状態でexeを起動してみても、dllが同じフォルダにないのでエラーになります)

サブフォルダ『DLL』に、dllファイルを移動させる

2)Visual Studioのソリューションエクスプローラーで、SampleProjectの下にApp.configというファイルがあるので開きます。

App.config

3)ファイルの中身はxmlです。ここに、「DLLというサブフォルダにクラスライブラリがあるよ」という内容を書き込んであげれば、アプリケーションはその場所からdllを読み込んでくれるようになります。
App.configを、以下のように書き換えます。

――――――――――――――――――――――――――――――――――
<configuration>
<startup>
<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.5″ />
</startup>

 <runtime>
<assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″>
<probing privatePath=”DLL”></probing>
</assemblyBinding>
</runtime>

</configuration>
――――――――――――――――――――――――――――――――――

App.configをこのように書き換える

<probing privatePath=”DLL”></probing>の部分が、dllを読み込むサブフォルダを指定するところです。この場合は、『DLL』というサブフォルダからdllを読み込む、という意味になります。
フォルダ名を;で区切ることで、複数のフォルダを指定することができます。

<probing privatePath=”DLL1;DLL2″></probing>

と書けば、DLL1とDLL2という二つのフォルダからdllを読み込みます。
また、

<probing privatePath=”DLL1/DLL2″></probing>

と “/” で区切れば、DLL1の中にあるDLL2というフォルダから読み込む、という風にサブフォルダのサブフォルダを指定することもできます。

以上の方法で、dllとexeを別々のフォルダに分けることが可能です。ただしこの方法では、必ずexeがあるフォルダより下のフォルダにdllを置く必要があります。それ以外の場所(例えばexeがあるフォルダの上)にあるdllファイルは、この方法では読み込むことができませんし、Windowsアプリケーションを作る上では推奨されないでしょう。
独自作成したdllは、exeと同じフォルダか、そのサブフォルダ(先述のApp.Configを使用)から読み込むようにしましょう。

2013年12月26日 | カテゴリー : VB.NET開発 | 投稿者 : youchin