2012-03-01 3 views
0

Я пытаюсь использовать log4net RabbitMQAppender в консольном приложении C#, и, похоже, для этого требуется ссылка RabbitMQ.Client 2.6.1.0. В настоящее время я использую последнюю версию, 2.7.1.0, которая является причиной создания Appender на провал со следующей ошибкой:Перенаправить ссылку на другую версию в консольном приложении C#

Could not create Appender [AmqpAppender] of type [log4net.RabbitMQ.RabbitMQAppender, log4net.RabbitMQ]. Reported error follows. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'RabbitMQ.Client, Version=2.6.1.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce' or one of its dependencies. The system cannot find the file specified.

Замена RabbitMQ.Client с предыдущей версией исправляет проблему, хотя я Мне бы хотелось, чтобы эта работа работала с последней версией.

Согласно another question здесь на SO, следующие конфигурации необходимо добавить в настройки приложения, которые я добавил:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="RabbitMQ.Client" /> 
      <bindingRedirect oldVersion="2.6.1.0" newVersion="2.7.1.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Однако, это, кажется, не имеет никакого значения, и ошибка все еще возникает, когда приложение бросает ошибку о невозможности загрузить файл RabbitMQ.Client.

Есть ли что-то еще, что нужно сделать для достижения этого, или что-то, что может остановить эту перенастройку сборки от работы?

ответ

0

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

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="RabbitMQ.Client" publicKeyToken="89e7d7c5feba84ce" culture="neutral" /> 
      <bindingRedirect oldVersion="2.6.1.0" newVersion="2.7.1.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
0

У меня была аналогичная проблема. Я создал .NET DLL, которая открыла COM-интерфейс. Внутренне моя DLL использовала RabbitMQ.Client.dll. Мой программист использовал это в приложении VB6. Он получил тот же файл, что и не найдена ошибка. Однако я мог бы создать приложение VB6 с использованием .NET DLL и НЕ получить ошибку.

Я, наконец, использовал ProcMon и отфильтровал результаты по имени процесса VB6.exe. Я смог определить, что .NET DLL ссылается на файл RabbitMQ.Client.DLL через сопоставленный диск вместо UNC. У меня был программист, отображающий тот же диск, и проблема исчезла.

Смежные вопросы