我设法用xna拼凑了F#中的示例游戏的合适实现。但是,当我尝试实例化我的派生游戏类时,代码会抛出一个FileNotFound异常,试图访问Microsoft.Xna.Framework程序集。为什么会这样?
代码:
#light
open System
open Microsoft.Xna.Framework
open Microsoft.Xna.Framework.Audio
open Microsoft.Xna.Framework.Content
open Microsoft.Xna.Framework.Design
open Microsoft.Xna.Framework.GamerServices
open Microsoft.Xna.Framework.Graphics
open Microsoft.Xna.Framework.Input
type SampleGame() as self =
class
inherit Game()
let mutable manager : GraphicsDeviceManager = null
let mutable spriteBatch : SpriteBatch = null
do
manager <- new GraphicsDeviceManager(self)
override Game.Initialize() =
base.Initialize()
override Game.LoadContent() =
spriteBatch <- new SpriteBatch(manager.GraphicsDevice)
base.LoadContent()
override Game.Update(gameTime) =
base.Update(gameTime)
if GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed then
self.Exit()
override Game.Draw(gameTime) =
manager.GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime)
end
let game = new SampleGame()
game.Run()
顺便说一下,我添加了适当的参考资料。 编辑:经过一番探索,我发现我的F#项目正在被编译为64位,这对32位XNA dll无效。然而VS 2010并没有让我改变解决方案平台。我该如何解决这个问题?
答案 0 :(得分:2)
我对XNA知之甚少,但它是'在GAC中',还是你需要复制.exe旁边的XNA dll?听起来好像你的.exe旁边的Microsoft.Xna.Framework.dll可以解决它。
修改
根据32/64位信息,也许手动更改“&lt; Platform&gt;”在.fsproj文件中。 (右键单击项目,'卸载项目',然后再次右键单击并编辑'Whatever.fsproj',将XML调用为'x86'(而不是'x64'或'AnyCPU')作为平台值,保存和右键单击项目和“重新加载”。)(Beta1中的各种F#错误导致平台/解决方案配置体验不够理想。)