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