.NETの「AppendPrivatePathは旧形式です」への改善方法

投稿者: Anonymous

VS2017 v15.8.7、.net framework 4.7.2にて、
アプリの配置においてサブフォルダ内にdllをまとめたいと思っております。
以下のコードを利用すると

//サブフォルダ"bin"に配置したdllを読み込む
AppDomain.CurrentDomain.AppendPrivatePath(
    Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"bin")
);

‘AppDomain.AppendPrivatePath(string)’は旧形式です (… Please investigate the use of AppDomainSetup.PrivateBinPath instead. …)

と、表示されます。

このままでもアプリケーションは問題なく動作するのですが、旧形式ではないコードにしたいと考えております。
現行のコードを教えてください。
よろしくお願いします。

解決

Why is AppDomain.AppendPrivatePath Obsolete?で説明されていますが、AppDomain.AppendPrivatePathは安全ではありません。
AppDomainが作成されプログラムが既に開始されてからのPath変更となるからです。解決策も提示されていてアプリケーション構成ファイルの<probing>を使います。具体的にはapp.config

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin" />
      </assemblyBinding>
   </runtime>
</configuration>

と記述することで、プログラム開始前に設定できます。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *