我有两个配置文件。
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目录中。
这是怎么回事,以及如何解决此问题?
谢谢