是否可以设置没有app.config的汇编探测路径?

时间:2011-03-07 13:36:46

标签: .net probing

我需要在子文件夹中为我的应用程序放置DLL。可以通过app.config设置此子文件夹:

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

但由于某些原因,我不想在这种情况下使用.config文件。是否可以直接从应用程序代码设置探测路径?我确信DLL总是在这个文件夹中。

有什么想法吗?

2 个答案:

答案 0 :(得分:13)

探测路径由主应用程序域的AppDomainSetup定义。在默认的CLR主机中,在代码开始运行之前会自动创建该AD。配置其设置的唯一方法是使用.config文件,它必须与exe具有相同的名称。在冻结之后,您在代码中所做的任何更改都不会产生影响。

变通方法是创建自己的AD,以便您可以更改其设置或实现AppDomain.AssemblyResolve事件。这两者都不比简单的解决方案好:.config文件或只是将程序集保存在正确的目录中。因人而异。

答案 1 :(得分:4)

您可以订阅AppDomain.CurrentDomain.AssemblyResolve并检查处理程序中的具体位置......