Можно ли использовать перенаправления привязки для замены сборки пакета nuget на настраиваемую замену отладки для тестирования? - PullRequest
0 голосов
/ 28 мая 2020

В моем конкретном случае мы используем клиентский пакет RabbitMQ от NuGet и имеем некоторые проблемы с его автоматическим восстановлением. Я хочу добавить дополнительное ведение журнала в реализацию, поэтому я взял исходный код для версии, которую мы используем, добавил несколько строк сообщений журнала и построил его. В идеале я мог бы разместить сборку на нашей тестовой машине, которая воспроизводит проблему, установить временное перенаправление привязки и прекратить работу. Но насколько я могу судить, он игнорирует перенаправление:

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="RabbitMQ.Client" publicKeyToken=null culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>

Вот сообщение об ошибке, которое я получаю, когда пытаюсь запустить его:

.\ClientAgent.Service.exe :
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Unhandled Exception:

System.IO.FileLoadException: Could not load file or assembly 'RabbitMQ.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at ClientAgent.Service.RabbitMqNLogEventListener..ctor()
   at ClientAgent.Service.ClientAgentProgram.Main()

Обратите внимание, что он все еще ссылается на PublicKeyToken of 89e7d7c5feba84ce.

  • Вероятно, это из-за строгого именования, или в этом случае ошибка будет более конкретной c?
  • Возможно ли это вообще, или есть sh лучший способ достичь этой цели?
  • Я мог бы перестроить свой агент, указывающий на эту dll, но у нас есть полдюжины или более внутренних библиотек, которые он использует, которые также полагаются на пакет rabbit, и я предполагаю, что ' d придется вручную обновить все свои ссылки на локально созданную dll.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...