2015-02-06 2 views
3

와 IronPython의 컴파일 (3.12), 내가받을 다음과 같은 오류 : 내가 모노와 데비안에 IronPython을 설치하려고하면 모노

socket.cs(1900,63): error CS0117: `System.Net.Sockets.SocketOptionName' does not contain a definition for `IPv6Only' 

가 어떻게이 문제를 해결할 수

? the IronPython website에 따르면 모든 것이 오류없이 컴파일되어야합니다.

모노 메일 링리스트에 already such a bug이 있지만이 버그에 대한 답변이 없습니다. 그러므로 나는이 포럼이이 질문을하기에 더 좋은 곳이라고 생각했다.

답변

3

IronPython이나 Mono에 대한 전문가가 아니지만 호기심에서 벗어났습니다.

SocketOptionNameenum의 값이 IPV6Only 인 경우 Mono 구현에 누락 된 것처럼 보입니다. 오류 메시지는 IronPython.Module/Socket.cs의 코드를 참조하려고 시도한 것입니다. 그것은이 이미 모든 플랫폼이 가진 기능과 코드베이스에 인식하고 있음을 밝혀, 너무 쉬운 해결 방법은 다음과 같습니다

당신의 자식 체크 아웃에서 Solutions/ 디렉토리의 Common.proj 프로젝트 파일이 가능 ReferencedPlatform 값의 수를 정의는. 기본값은 V4입니다. 다음, 당신이 찾아 목록 끝에 FEATURE_IPV6을 삭제하는 경우에 중첩

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

이 적용되는 기능의 목록과 특징 요소이며, : 그냥 거기에 XML에서 아래 블록의 시작을 찾을 수 프로젝트가 make을 사용하여 빌드됨을 발견해야합니다. 나는 간단히 생성 된 ipy.exe을 발사하여 작동시키는 것으로 보였습니다.

분명히 이것은 아주 좋은 해결책은 아닙니다. 아마도 IronPython 프로젝트에 버그 보고서를 제출하는 것이 가장 좋습니다. 나는 리눅스에서 Mono가 유지 보수를 위해 일하는 사람들에게는 아마도 매우 낮은 우선 순위 일 것이라고 생각한다.

0

IPv6Only을 false로 설정하면 정확함, 최대 모노 4.0까지 Protocol option not supported을 던집니다. https://github.com/mono/mono/blob/mono-4.2.0-branch/mono/metadata/socket-io.c#L536

을, 당신은 정교한 컴파일 플래그 IPV6_V6ONLY

+0

제발주의 않습니다

아마 여기에 해결? 'xbuild' 명령에 텍스트를 추가하면 컴파일 될 것이라고 말하는 것입니까? 그렇다면 그 텍스트는 무엇입니까? – Michael

+0

모노 4.2.1을 사용하고 있으며,'Common.proj'에서'IPV6Only' 기능을 제거하지 않고 빌드하려고해도 여전히 실패합니다. – Michael

+0

불행히도 4.2 버전을 사용해 보지 않았습니다. 곧 작동 할 것임을 암시하는 코드 변경을 발견했습니다. – KCD