bindingRedirect не работает с configSource - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть два файла конфигурации.

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.

Что происходит и как решить эту проблему?

спасибо

...