49430


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

[code]

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

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

と、表示されます。

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


CC BY-SA 4.0
2018-10-19T00:06:06.743
49428
2018-10-19T01:27:18.550
22913
question
c# .net
.NETの「AppendPrivatePathは旧形式です」への改善方法


[Why is AppDomain.AppendPrivatePath
Obsolete?](https://blogs.msdn.microsoft.com/dotnet/2009/05/14/why-is-
appdomain-appendprivatepath-
obsolete/)で説明されていますが、`AppDomain.AppendPrivatePath`は安全ではありません。  
`AppDomain`が作成されプログラムが既に開始されてからのPath変更となるからです。解決策も提示されていてアプリケーション構成ファイルの[`<probing>`](https://docs.microsoft.com/en-
us/dotnet/framework/configure-apps/file-schema/runtime/probing-
element)を使います。具体的には`app.config`に

[code]

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

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


CC BY-SA 4.0
2018-10-19T01:27:18.550
49430
2018-10-19T01:27:18.550
4236
49428
answer