Компиляция f # для xbox360 - PullRequest
       0

Компиляция f # для xbox360

3 голосов
/ 24 ноября 2011

Я пытался скомпилировать некоторые библиотеки, которые я написал для f #, для работы в игре, которую я пишу для xbox360, за исключением того, что я получаю сообщение об ошибке "The module/namespace 'System.Net.WebRequest' from compilation unit 'System' did not contain the namespace, module or type 'WebRequest'.

КомандаЯ использовал для компиляции это

"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

Кто-нибудь знает способ исправить или избежать этой проблемы?

1 Ответ

9 голосов
/ 24 ноября 2011

Сборки xbox являются урезанной версией обычных .net (используется клиентская среда + - несколько бит).

Одним из основных ограничений является то, что с xna на xbox вы можете общаться только с помощью серверов Microsoft LIVE. т.е. нет веб-запросов.

Это можно увидеть, сравнив поддерживаемую SerializableAttribute страницу , которая поддерживается (имеет символ xna рядом с поддерживаемыми элементами и конструкторами), с WebRequest page , которая не.


Еще не все потеряно . Похоже, что базовая DLL-библиотека F # требует, чтобы этот класс присутствовал в System, поэтому нельзя просто ссылаться на версии базовой библиотеки XNA / xbox.
К счастью, некоторые люди в Microsoft любезно создавали библиотеки DLL без этого ограничения. Смотрите здесь:

https://docs.google.com/presentation/d/1teGhBf-m7qRkMzsbCKvRcIEo-QLwdK9w8VOEWqu1qWQ/edit#slide=id.ge02f430_0_70 Слайд 29.

XNA + F # на Xbox 360 не является официально поддерживаемой комбинацией. отсутствие поддержки хвостовых вызовов в CLR вызывает сбои со стандартным F # основная библиотека Дон Сайм и другие сотрудники Microsoft любезно предоставили сделал F # core lib для Xbox 360. Нужно возиться с .fsproj файлы (можно сделать автоматически с помощью скрипта).

В этой презентации я нашел следующие ссылки:

Проект, содержащий библиотеки F # DLL, специально созданные для XNA (похоже, папка FSharpCore в Source - это то, что вам нужно): https://bitbucket.org/johdex/xnautils

Блог о разработке для XNA в F #: http://sharp -gamedev.blogspot.co.uk /

...