13

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

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

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

有任何想法吗?

4

2 回答 2

14

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

解决方法是创建您自己的 AD,以便您可以更改其设置或实施 AppDomain.AssemblyResolve 事件。这两种方法都比不上简单的解决方案:.config 文件或仅将程序集保存在正确的目录中。是的。

于 2011-03-07T15:17:30.477 回答
4

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

于 2011-03-07T13:44:59.627 回答