У меня есть два файла конфигурации.
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.
Что происходит и как решить эту проблему?
спасибо