1

我设法用 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 不允许我更改解决方案平台。我该如何解决?

4

1 回答 1

2

我对 XNA 知之甚少,但它是“在 GAC 中”,还是您需要将 XNA dll 复制到您的 .exe 旁边?听起来 Microsoft.Xna.Framework.dll 在您的 .exe 旁边可能会解决它。

编辑

根据 32/64 位信息,可能手动更改 .fsproj 文件中的“<Platform>”。(右键单击项目,“卸载项目”,然后再次右键单击并“编辑 What.fsproj”,将 XML 插入以将“x86”(而不是“x64”或“AnyCPU”)作为平台值,保存,然后右键单击项目并“重新加载”。)(Beta1 中的各种 F# 错误使平台/解决方案配置体验不太理想。)

于 2009-06-12T05:12:55.520 回答