bindingRedirect не работает с 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>
Это только полуработанный. Это может игнорировать MyDll в GAC. Но он не хочет использовать newVersion="1.2.3.4" в моем каталоге bin. Это указывает на версию 1.2.3.3. Эта версия 1.2.3.3 - это версия, в которой проект myApp упоминается в HintPath (ссылка, определенная в проекте myApp, - это MyDll.dll, версия 0.0.0.0, и никакой конкретной версии). Таким образом, при компиляции myApp захватил версию 1.2.3.3 MyDll.dll. Версия в GAC - 2.0.0.0.
Используя перенаправление, он проигнорировал версию GAC и пытается загрузить 1.2.3.3. Тем не менее, в моем определении перенаправления я хотел загрузить 1.2.3.4. У меня есть версия 1.2.3.4 в каталоге bin, но он жалуется, что 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.
Что происходит и как это решить?
благодарю вас