如何重定向与装载主机无关的DLL的程序集绑定

时间:2017-11-27 13:49:12

标签: c# .net .net-assembly

我有一个通过它的.config:

使用程序集绑定的DLL
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

这是必需的,因为依赖项会加载冲突版本的Newtonsoft.Json(6.0与9.0),并且需要绑定来解决冲突。

我遇到的问题是这个DLL是一个Powershell模块,由powershell加载。它的.config被忽略,运行时抛出异常:

My-cmdLet : Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral,
ublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.

通常我会通过修改托管exe .config文件并添加相关的dll部分来解决这个问题。但在这种情况下,托管.exe是Powershell,我宁愿不搞乱那个 .config

DLL本身有没有办法正确解析绑定?

0 个答案:

没有答案