我有一个使用F#RabbitMQ的小型库,可以使用Visual Studio工作,无论是编译还是F#交互。
当我尝试在最新的(6.1)Xamarin Studio中加载它时,库编译得很好但是尝试在F#中加载它的源文件交互式失败抱怨某些方法的参数数量不正确。
例如,RabbitMQ IModel.ExchangeDeclare有3个重载,有2个,3个和5个参数(我可以使用Xamarin Assembly Browser验证它)。该库使用带有5个参数的重载。 F#Interactive打印一个错误,指出没有5个参数的重载,因此我无法以交互方式执行RabbitMQ API方法。然而,项目编译得很好。我相信这个错误与RabbitMQ无关,但为什么F#Interactive会混淆?
答案 0 :(得分:1)
正如评论中所建议的那样,它必须是不同的DLL;它是。问题是Windows中Visual Studio使用的F#Interactive使用不同的逻辑来比较Xamarin / Mono中FSI处理它的方式。
Windows中的Visual Studio可以由#I directive
控制,因此不建议在#r directive
中指定相对路径(此处更多关于它:Avoid using relative paths in #r directives),但Xamarin / Mono需要路径规范在#r指令中加载正确的DLL。