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.

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

благодарю вас

0 ответов

Другие вопросы по тегам