WPFで読み込むDLLたちを別フォルダにまとめる

ライブラリをいくつか利用したりするとちょっとしたツールでもDLLが大量になってしまう。
PrismとReactivePropertyを使ってMVVMで軽く組もうとでも思うと、
大したことない労力のEXE1つに対してDLLが実に20個近く追加されてしまう。

こうなるとDLLに埋もれてEXEを探すのが大変・・・となってしまうので解決策を探してみました。

App.configのassemblyBindingタグ内にprobingタグを追加すればできるみたいです。

下記例はexeと同階層のbinフォルダにDLLを集約するイメージ

App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin" />
    </assemblyBinding>
  </runtime>
</configuration>

注意点としては「exe名 + .exe.config」のファイルは必ずEXEと同階層にいないと動かないので注意
(このConfigを見て、設定したフォルダ内のDLLを見に行くので当たり前に必要ですね)

勉強がてらにちょっとしたツールに大層なライブラリを突っ込むことをよくするので、これでスッキリEXEを叩くことができ、かつ気兼ねなく勉強もできます。

参考元

DLLの配置場所を変更する(probing, codebase, developmentMode)

こういうのもアリ

実行ファイルとDLLを一つにまとめる