Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@float-on-mk-9

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を一つにまとめる

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
31
Help us understand the problem. What are the problem?