当我尝试在具有Mono(3.12)的Debian上安装IronPython时,出现以下错误:
socket.cs(1900,63): error CS0117: `System.Net.Sockets.SocketOptionName' does not contain a definition for `IPv6Only'
我怎么解决这个问题?根据the IronPython website,所有内容均应编译无误.
在Mono邮件列表中,有already such a bug,但是此错误没有答案.因此,我认为也许这个论坛是解决这个问题的一个好地方.
解决方法:
我不是IronPython或Mono的专家,但是出于好奇,我只是尝试了一下.
无论出于何种原因,Mono实现中都缺少SocketOptionName枚举中的IPV6Only值.您收到的错误消息来自IronPython.Module / Socket.cs中的代码尝试引用此消息.事实证明,代码库中已将此功能识别为并非所有平台都具有的功能,因此有一个简单的解决方法:
git checkout的Solutions /目录中的Common.proj项目文件定义了许多可能的ReferencedPlatform值.默认值为V4.在XML的下面,找到一个开始的块:
<PropertyGroup Condition="'$(ReferencedPlatform)' == 'V4'">
嵌套在其中的Features元素包含适用功能的列表,如果您在列表末尾找到并删除了FEATURE_IPV6,那么您应该发现该项目将使用make进行构建.我短暂地尝试启动生成的ipy.exe,它似乎可以正常工作.
显然,这不是一个很好的解决方案.最好的办法是向IronPython项目提交错误报告.我猜想Linux上的Mono对于那些正在维护它的人来说可能不是一个很低的优先级.