Исключение FileNotFound при попытке запустить проект XNA F#

Мне удалось собрать подходящую реализацию примера игры на F# с помощью xna. Однако, когда я пытаюсь создать экземпляр производного игрового класса, код создает исключение 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 не позволяет мне изменить платформу решения. Как я могу это исправить?


person RCIX    schedule 12.06.2009    source источник
comment
@RCIX — ваши усилия с F# круты и все такое, но знаете, внешний вид этого образца действительно напоминает мне о том, почему выбор правильного инструмента для работы так важен.   -  person Peter Lillevold    schedule 12.06.2009
comment
Вы, вероятно, правы, но я просто заставлял его работать, так как это единственное, что я мог придумать, это будет достойный проект для изучения классов. Если я что-нибудь построю, это будет просто маленькая игра. В конце концов, лучший способ что-то узнать — это попытаться применить это к чему-то и посмотреть, что приживется, не так ли?   -  person RCIX    schedule 12.06.2009
comment
Я полностью согласен с этим. В настоящее время я изучаю F#, и когда я увидел ваш образец, меня просто поразило, что некоторые вещи лучше делать с помощью императивного языка, и я увидел, что F# действительно сияет, когда дело доходит до функциональных вещей, таких как вычисления и манипулирование данными. И снова самое замечательное в .Net то, что вы можете смешивать и сочетать языки в зависимости от того, что вы создаете.   -  person Peter Lillevold    schedule 12.06.2009


Ответы (1)


Я недостаточно знаю о XNA, но это «в GAC», или вам нужно скопировать dll XNA рядом с вашим .exe? Похоже, что наличие Microsoft.Xna.Framework.dll рядом с вашим .exe может решить эту проблему.

РЕДАКТИРОВАТЬ

Основываясь на 32/64-битной информации, возможно, вручную измените «‹Платформа›» в файле .fsproj. (Щелкните правой кнопкой мыши проект, «Выгрузить проект», затем еще раз щелкните правой кнопкой мыши и «Редактировать независимо.fsproj», вставьте в XML значение «x86» (а не «x64» или «AnyCPU») в качестве значения платформы, сохраните и щелкните правой кнопкой мыши проект и «Перезагрузить».) (Различные ошибки F # в бета-версии 1 вступают в сговор, чтобы сделать работу с платформой/SolutionConfiguration менее оптимальной.)

person Brian    schedule 12.06.2009
comment
Для тех, кто интересуется более подробной информацией о происходящем: blogs.msdn.com/shawnhar/archive/2008/02/25/ - person jasonh; 12.06.2009
comment
См. также материалы, упоминающие F#, в download.microsoft.com/download/7/A/0/ - person Brian; 12.06.2009