c# - 用 Mono 编译 IronPython

标签 c# mono ironpython

当我尝试在带有 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 checkout 中 Solutions/ 目录中的 Common.proj 项目文件定义了许多可能的 ReferencedPlatform 值。默认值为 V4。在 XML 的正下方,找到一个开始的 block :

<PropertyGroup Condition="'$(ReferencedPlatform)' == 'V4'">

嵌套在一个包含适用功能列表的 Features 元素中,如果您在列表末尾找到并删除 FEATURE_IPV6,那么您应该会发现该项目将使用制作。我简单地尝试启动生成的 ipy.exe,它似乎可以工作。

显然这不是一个很好的解决方案。最好的办法可能是向 IronPython 项目提交错误报告。我猜想,对于致力于维护它的人来说,Linux 上的 Mono 的优先级可能相当低。

关于c# - 用 Mono 编译 IronPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364592/

相关文章:

c# - 如何使用 Linq 将数据表过滤为数据表?

c# - 尽管解析字节数据时出错,如何继续循环

c# - 如何分发 32 位和 64 位版本的库

java - linux下java调用C#mono代码

c# - IronPython clr 无法使用 AutoCAD API 的 dll

c# - 使用动态键反序列化对象集合

c# - 如何在 Linux 中从 Mono/C# 访问操纵杆/游戏 handle ?

c# - 使用 mono 编译应用程序

c# - microsoft.scripting.hosting.scriptscope 不包含 'SomeFunction' 的定义

bash - 从 Bash 命令在文本文件中查找和替换