用 Mono 编译 IronPython
Compile IronPython with Mono
当我尝试在带有 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 的专家,但出于好奇我只是尝试了这个。
无论出于何种原因,SocketOptionName
enum
中的 IPV6Only
值似乎在 Mono 实现中缺失。您收到的错误消息来自 IronPython.Module/Socket.cs
中试图引用此代码的代码。事实证明,这在代码库中已经被识别为并非所有平台都具有的功能,因此有一个简单的解决方法:
git 结帐中 Solutions/
目录中的 Common.proj
项目文件定义了许多可能的 ReferencedPlatform
值。默认值为 V4
。在 XML 正下方找到一个块开始:
<PropertyGroup Condition="'$(ReferencedPlatform)' == 'V4'">
嵌套在一个包含适用功能列表的 Features 元素中,如果您在列表末尾找到并删除 FEATURE_IPV6
,那么您应该会发现该项目将使用 make
。我简单地尝试启动生成的 ipy.exe
,它似乎有效。
显然这不是一个很好的解决方案。最好的办法可能是向 IronPython 项目提交错误报告。我猜 Linux 上的 Mono 对于正在维护它的人来说可能是一个相当低的优先级。
正确,最高单声道 4.0 在设置 IPv6Only
false 时抛出 Protocol option not supported
。
这里可能已解决:https://github.com/mono/mono/blob/mono-4.2.0-branch/mono/metadata/socket-io.c#L536
但请注意编译标志 IPV6_V6ONLY
当我尝试在带有 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 的专家,但出于好奇我只是尝试了这个。
无论出于何种原因,SocketOptionName
enum
中的 IPV6Only
值似乎在 Mono 实现中缺失。您收到的错误消息来自 IronPython.Module/Socket.cs
中试图引用此代码的代码。事实证明,这在代码库中已经被识别为并非所有平台都具有的功能,因此有一个简单的解决方法:
git 结帐中 Solutions/
目录中的 Common.proj
项目文件定义了许多可能的 ReferencedPlatform
值。默认值为 V4
。在 XML 正下方找到一个块开始:
<PropertyGroup Condition="'$(ReferencedPlatform)' == 'V4'">
嵌套在一个包含适用功能列表的 Features 元素中,如果您在列表末尾找到并删除 FEATURE_IPV6
,那么您应该会发现该项目将使用 make
。我简单地尝试启动生成的 ipy.exe
,它似乎有效。
显然这不是一个很好的解决方案。最好的办法可能是向 IronPython 项目提交错误报告。我猜 Linux 上的 Mono 对于正在维护它的人来说可能是一个相当低的优先级。
正确,最高单声道 4.0 在设置 IPv6Only
false 时抛出 Protocol option not supported
。
这里可能已解决:https://github.com/mono/mono/blob/mono-4.2.0-branch/mono/metadata/socket-io.c#L536
但请注意编译标志 IPV6_V6ONLY