2011-11-24 5 views
3

나는 xbox360에 대해 작성한 게임에서 작동하도록 f #에서 작성한 일부 라이브러리를 컴파일하려고 시도했지만 오류가 계속 발생하는 것을 제외하고는 "The module/namespace 'System.Net.WebRequest' from compilation unit 'System' did not contain the namespace, module or type 'WebRequest'입니다. 나는 그것이 컴파일 사용하고xbox360에 대한 f # 컴파일

명령

"C:\Program Files (x86)\Microsoft F#\v4.0\fsc.exe" -o:obj\Release\XBox360.dll --standalone --noframework --define:TRACE --optimize+ --tailcalls+ -r:"C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360\mscorlib.dll" -r:"C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360\System.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll" --target:library --warn:3 --warnaserror:76 --fullpaths --flaterrors somefile.fs 

사람이이 문제를 해결하거나 방지 할 수있는 방법을 알고 있나요?

답변

9

xbox 어셈블리는 일반 .net 버전의 축소 버전입니다 (클라이언트 프레임 워크 + 몇 비트 사용).

중요한 제한 사항 중 하나는 xbox의 xna를 사용하면 Microsoft의 라이브 서버를 통해서만 통신 할 수 있다는 것입니다. 즉 웹 요청이 없습니다.

지원되는 SerializableAttribute page (지원되는 멤버 및 생성자 옆에 xna 기호가 있음)을 WebRequest page과 비교하여 볼 수 있습니다.


모든

를 손실되지 않습니다. 핵심 F # DLLS는 System에 해당 클래스가 있어야하므로 코어 라이브러리의 XNA/Xbox 버전에만 링크 할 수는 없습니다.
Microsoft의 일부 사람들은 이러한 제한없이 친절하게 DLL을 만들었습니다. 여기를 참조하십시오 :

https://docs.google.com/presentation/d/1teGhBf-m7qRkMzsbCKvRcIEo-QLwdK9w8VOEWqu1qWQ/edit#slide=id.ge02f430_0_70 슬라이드 X 박스 360에 29

XNA + F 번호가 공식적으로 지원 조합이 아니다. CLR에서 tail 호출을 지원하는 이 부족하면 표준 F # 코어 lib와 충돌합니다. Microsoft의 Don Syme 및 다른 사람들은 을 F # core lib로 Xbox 360 용으로 제공합니다. .fsproj 파일을 사용하여 제작해야합니다 (스크립트를 사용하여 자동으로 수행 할 수 있음). 이 프리젠 테이션에서

내가 다음 링크 발견 : 특히 XNA을 위해 만들어진

프로젝트가 포함 F의 # DLL을 (Source에 폴더 FSharpCore처럼 필요하시면 모양) : https://bitbucket.org/johdex/xnautils

F #에서 XNA를 개발하기위한 블로그 : http://sharp-gamedev.blogspot.co.uk/

+1

이 문제를 해결하는 방법이 있습니까? (VS 2012를 사용하고 프로젝트 MBBuild 파일을 가지고 놀 때까지이 작업을했습니다; 내 질문 [here] 참조 (http://stackoverflow.com/questions/12993514/target-the-xna-framework-in-ordinary -visual-studio-2012-project)) – Jwosty

+0

불행히도. DLL (또는 DLL의 고유 한 버전을 만들어서 컴파일하는 방법)을 컴파일 할 수 있다고하더라도 MS는 특히 미디어 서버 (스트리밍 음악 등) 또는 LIVE 서비스 이외의 다른 통신 수단과 통신 할 수 없습니다. –

+0

WebRequest 기능을 사용 중지하면 작동하지 않는 이유는 무엇입니까? 따라서 다른 컴퓨터와 통신하는 유일한 방법은 귀하가 언급 한 것일까요? – Jwosty