我需要在子文件夹中为我的应用程序放置DLL.可以通过app.config设置此子文件夹:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Libs"/>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,我不想在这种情况下使用.config文件.是否可以直接从应用程序代码设置探测路径?我确信DLL总是在这个文件夹中.
有任何想法吗?
Han*_*ant 13
探测路径由主应用程序域的AppDomainSetup定义.在默认的CLR主机中,在代码开始运行之前会自动创建该AD.配置其设置的唯一方法是使用.config文件,它必须与exe具有相同的名称.在冻结之后,您在代码中所做的任何更改都不会产生任何影响.
解决方法是创建自己的AD,以便您可以更改其设置或实现AppDomain.AssemblyResolve事件.这两者都不比简单的解决方案好:.config文件或只是将程序集保存在正确的目录中.因人而异.
您可以订阅 AppDomain.CurrentDomain.AssemblyResolve 并检查处理程序中的具体位置...