bindingRedirect不适用于configSource

时间:2018-11-08 21:36:42

标签: app-config configsource

我有两个配置文件。

myApp.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding configSource="DllsRedirect.config"/>
  </runtime>
</configuration>

DllsRedirect.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MyDll" culture="neutral" publicKeyToken="validKeyHere"/>
        <bindingRedirect oldVersion="0.0.0.0-999.0.0.0" newVersion="1.2.3.4" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

它只是半成品。它能够忽略GAC中的MyDll。但是,不愿意在我的bin目录中使用newVersion =“ 1.2.3.4”。它指向版本1.2.3.3。此版本1.2.3.3是在HintPath中引用myApp项目的版本(myApp项目中定义的引用是MyDll.dll,版本0.0.0.0,无特定版本)。因此,myApp编译时抓取了MyDll.dll版本1.2.3.3。 GAC中的版本是2.0.0.0。

使用重定向,它忽略了GAC版本,并试图加载1.2.3.3。 但是,在我的重定向定义中,我想加载1.2.3.4。我在bin目录中有1.2.3.4版,但是,它抱怨要加载的dll是1.2.3.3。

现在。如果我将两个文件合并到一个myApp.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MyDll" culture="neutral" publicKeyToken="7ee08ee69d58df46"/>
        <bindingRedirect oldVersion="0.0.0.0-999.0.0.0" newVersion="1.2.3.4" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

然后,这可行。愿意将1.2.3.4版本加载到我的bin目录中。

这是怎么回事,以及如何解决此问题?

谢谢

0 个答案:

没有答案