2009-06-12 107 views
1

我設法用F#與xna一起拼湊了一個合適的示例遊戲實現。但是,當我嘗試實例化派生遊戲類時,代碼會拋出FileNotFound異常,嘗試訪問Microsoft.Xna.Framework程序集。爲什麼會發生?當試圖運行XNA F#項目時出現FileNotFound異常

代碼:

#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

@RCIX - 你用F#的努力很酷,但是你知道,這個例子的外觀真的讓我想起爲什麼選擇合適的工具是非常重要的。 – 2009-06-12 08:16:54

+0

你可能是對的,但我只是想讓它陷入混亂的境地,因爲我唯一能想到的就是這樣一個體面的課程。如果我建立任何東西,它只會是一個小遊戲。畢竟,瞭解某件事的最好方法是嘗試將其應用於某件事物,看看有什麼不一樣,不是嗎? – RCIX 2009-06-12 09:15:17

回答

2

我對XNA不夠了解,但是它在'GAC'中,還是需要將XNA dll複製到.exe旁邊?這聽起來像也許有你的.exe旁邊的Microsoft.Xna.Framework.dll可以解決它。

EDIT

基於該六十四分之三十二位信息,可能手動更改.fsproj文件中的「<平臺>」。 (右鍵單擊項目'Unload Project',然後再次右鍵單擊'編輯Whatever.fsproj',將XML指定爲'x86'(而不是'x64'或'AnyCPU')作爲Platform值,保存並)(Beta1中的各種F#漏洞使得平臺/ SolutionConfiguration體驗不盡如人意)