我一直在尝试编译我用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
有没有人知道修复或避免此问题的方法?
答案 0 :(得分:9)
xbox xna程序集是普通.net程序集的缩减版本(它使用客户端框架+ - 几位)。
一个主要限制是xbox上的xna只能使用微软的LIVE服务器进行通信。即没有网络请求。
您可以通过比较支持SerializableAttribute
page(支持的成员和构造函数旁边的xna符号)与WebRequest
page的https://docs.google.com/presentation/d/1teGhBf-m7qRkMzsbCKvRcIEo-QLwdK9w8VOEWqu1qWQ/edit#slide=id.ge02f430_0_70来看到这一点。
一切都不会丢失。核心F#DLLS似乎要求该类存在于System中,因此您无法链接到核心库的XNA / xbox版本。
Luckely,微软的一些人在没有这个限制的情况下建造了DLL。见这里:
Source幻灯片29。
Xbox 360上的XNA + F#不是官方支持的组合。缺乏 CLR中对尾调用的支持导致与标准F#的崩溃 核心库。 Don Syme和其他人在微软提供了一个习惯 为Xbox 360制作了F#核心库。需要摆弄.fsproj 文件(可以使用脚本自动完成)。
在该演示文稿中,我找到了以下链接:
包含特别为XNA构建的F#DLL的项目(看起来https://bitbucket.org/johdex/xnautils中的文件夹FSharpCore就是你所追求的):http://sharp-gamedev.blogspot.co.uk/
关于在F#中开发XNA的博客:{{3}}