2016-06-01 1 views
1

Visual Studio를 사용하여 잘 작동하는 F #의 RabbitMQ를 사용하는 작은 라이브러리가 컴파일 및 F # 대화식으로 있습니다.Xamarin Studio에서 F # 대화 형을 사용할 때 메서드 인수의 수가 올바르지 않습니다.

최신 (6.1) Xamarin Studio에서로드하려고하면 라이브러리는 정상적으로 컴파일되지만 F # 대화식에서 소스 파일을로드하려고하면 특정 메소드에 대한 잘못된 인수 수를 불평하지 않습니다.

예를 들어 RabbitMQ IModel.ExchangeDeclare에는 2, 3 및 5 개의 인수가있는 오버로드가 3 개 있습니다 (Xamarin Assembly Browser를 사용하여 확인할 수 있음). 라이브러리가 5 개의 인수로 오버로드를 사용 중입니다. F # Interactive는 RabbitMQ API 메소드를 대화 형으로 실행할 수 없으므로 5 개의 인수로 오버로드가 없다는 오류를 출력합니다. 프로젝트가 얼마나 괜찮습니까? 이 오류는 RabbitMQ와는 아무런 관계가 없지만 F # Interactive가 혼란스러워하는 이유는 무엇입니까?

+1

적어도 간단한 예제를 게시하십시오.하지만 내 생각에 다른 DLL을 참조합니다. –

+0

위와 같이 썼을 때 5 개의 인수가있는 ExhangeDeclare 호출이 실패합니다. channelExchangeDeclare (queueExchange.ExchangeName, exchangeName, queueExchange.Durable, false, queueExchange.Arguments)입니다. 다른 RabbitMQ.dll을 검색합니다. 지금까지 이것은 이상하게 보입니다. –

+0

네가 옳았다 : 참조 된 내용 : '/Library/Frameworks/Mono.framework/Versions/4.4.0/lib/mono/4.5/RabbitMQ.Client.dll'(파일이 F # Interactive에 의해 잠길 수 있음) 프로세스) 질문은 지금이다 : 나는 이것을 어떻게 덮어 써야 할까? 올바른 경로를 나타내는 #I 명령문이 있습니다. –

답변

1

주석에서 제안했듯이 다른 DLL이어야합니다. 그리고 그것은이었다. 문제는 Windows의 Visual Studio에서 사용되는 F # Interactive가 Xamarin/Mono의 FSI에서 처리되는 방식을 비교하는 다른 논리를 사용한다는 것입니다.

Windows의

비주얼 스튜디오는 #I directive에 의해 제어 될 수있다, 그래서는 (여기에 대한 자세한 : Avoid using relative paths in #r directives를) #r directive에 상대 경로를 지정하지 않는 것이 좋습니다,하지만 자 마린/모노 오른쪽 DLL을로드 할 수 #R 지시어에서 경로 지정 권한을 필요로 .

관련 문제