2017-10-20 6 views
0

easynetq를 사용할 때 rabbitmq.client 버전에 문제가 있습니다. 그러나 정확히 어떤 원인인지는 알지 못합니다! 내 솔루션에는 WindowsService (exe 파일) 및 여러 라이브러리 프로젝트 용 프로젝트가 포함되어 있으며 모두 .NET 4.6.2에 맞게 작성되었습니다.악몽과 rabbitmq.client 버전

2017-10-20 09:58:49,185; [9]; INFO ; MqService1Log; [AppHost.Configure]; - Registering RabbitMQ server using the EasyNetQ library.... 
2017-10-20 09:58:49,260; [9]; ERROR; MqService1Log; [Program.Main]; - System.IO.FileLoadException: Die Datei oder Assembly "RabbitMQ.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040) 
Dateiname: "RabbitMQ.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce" ---> System.IO.FileLoadException: Die Datei oder Assembly "RabbitMQ.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040) 
Dateiname: "RabbitMQ.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce" 

=== Zustandsinformationen vor Bindung === 
LOG: DisplayName = RabbitMQ.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce 
(Fully-specified) 
LOG: Appbase = file:///D:/Projects/BizBusMQSamples/MqService1/MqService1/MqService1/bin/Debug/ 
LOG: Ursprünglicher PrivatePath = NULL 
Aufruf von Assembly : EasyNetQ, Version=2.0.4.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: Diese Bindung startet im default-Load-Kontext. 
LOG: Die Anwendungskonfigurationsdatei wird verwendet: D:\Projects\BizBusMQSamples\MqService1\MqService1\MqService1\bin\Debug\MqService1.vshost.exe.Config 
LOG: Die Hostkonfigurationsdatei wird verwendet: 
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet. 
LOG: In der Anwendungskonfigurationsdatei wurde eine Umleitung gefunden. 4.0.0.0 wird nach 5.0.0.0 umgeleitet. 
LOG: Verweis nach der Richtlinie: RabbitMQ.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce 
LOG: Die gleiche Bindung ist bereits aufgetreten und hat den Fehler hr = 0x80131040 verursacht. 

    bei System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType) 
    bei System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 
    bei System.Reflection.RuntimeMethodInfo.GetParameters() 
    bei System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat) 
    bei System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 
    bei System.Exception.GetStackTrace(Boolean needFileInfo) 
    bei System.Exception.ToString(Boolean needFileLineInfo, Boolean needMessage) 
    bei System.Exception.ToString(Boolean needFileLineInfo, Boolean needMessage) 
    bei System.Exception.ToString() 
    bei System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) 
    bei System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) 
    bei System.String.Format(String format, Object arg0, Object arg1) 
    bei MqService1.AppHost.Configure(Container container) in D:\Projects\BizBusMQSamples\MqService1\MqService1\MqService1\AppHost.cs:Zeile 51. 
    bei ServiceStack.ServiceStackHost.Init() 
    bei MqService1.Program.Main(String[] args) in D:\Projects\BizBusMQSamples\MqService1\MqService1\MqService1\Program.cs:Zeile 30. 

뭔가 RabbitMQ를 요구하는 것 : 이것은 다음과 같은 예외와 충돌이 발생

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

: (서비스 실행의) 내 exe.conf에서

내가 다음 항목을 참조 파일 .Client 5 다른 버전이 필요한 동안 버전 4. EasyNetQ가 5.0.1을 지원하지 않는 것 같아서 (연결할 때 연결 팩토리에서 알 수없는 메소드 오류가 발생 함) 을 5.0.1로 업그레이드하고 RabbitMQ.Client를 유지합니다. 4.1.3. 내가 bindingRedirect (5 4에서 변경 버전 ) oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"에이 파일의 .conf 변경하는 경우

모든 것을 잘 작동합니다. 문제는 프로젝트를 만들 때마다 다시 5로 변경된다는 것입니다!

아마도 다음 정보를 추가해야합니다. 솔루션에 일부 관리 기능이 포함 된 라이브러리 프로젝트가 포함되어 있습니다. 이 프로젝트에는 EasyNetQ.Management.Client가 포함되어 있지만 NuGet 정보에 따르면 NO 종속성이 있습니다. 그러나 내 솔루션에서이 라이브러리 프로젝트를 제거하면 구성 파일이 변경되지 않습니다 .....

어떤 일이 벌어지고 있으며 어떻게 해결할 수 있습니까? 어떤 도움이라도 대단히 감사합니다. 내가 솔루션에서 라이브러리 프로젝트를 제거하면

편집

는 여전히 그것은이 뭔가에 의해 발생해야 버전 5로 내 config 파일을 변경 .

답변

0

업데이트 @ThommyB : 방금 EasyNetQ 2.2.0을 출시했습니다. 시도해 보시겠습니까?


내가 전에이 문제를 보지 못했다

, 나는이 버전으로 업데이트시겠습니까 여전히 참조 또는 패키지가 5

을 RMQ 거기 용의자 ? https://www.nuget.org/packages/EasyNetQ/2.3.0-alpha0002

그러면 RabbitMQ 5 클라이언트가 생깁니다. 다른 많은 것들이 변하지 않기 때문에 큰 위험으로 생각하지 않습니다.

+0

업데이트하면 다시 작동합니다. 최종적으로 곧 '알파'로 표시된 버전으로 작업하고 싶다면 내 환경에서는 제작 준비가되어 있지 않아야합니다. 하지만 도움을 주셔서 감사합니다! – ThommyB