문제

XNA와 함께 F#에서 샘플 게임의 적절한 구현을 함께 모았습니다. 그러나 파생 된 게임 클래스를 인스턴스화하려고 할 때 코드는 Microsoft.xna.framework 어셈블리에 액세스하려는 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은 솔루션 플랫폼을 변경할 수 없습니다. 이것을 어떻게 고치나요?

도움이 되었습니까?

해결책

나는 XNA에 대해 충분히 알지 못하지만 'GAC에'입니까, 아니면 .exe 옆에 XNA DLL을 복사해야합니까? 아마도 .exe 옆에 microsoft.xna.framework.dll이있는 것처럼 들립니다.

편집하다

32/64 비트 정보를 기반으로 수동으로 변경 될 수 있습니다. "u003CPlatform> ".fsproj 파일에서 (프로젝트를 마우스 오른쪽 버튼으로 클릭, '언로드 프로젝트'를 마우스 오른쪽 버튼으로 클릭 한 다음 다시 마우스 오른쪽 버튼을 클릭 한 다음 '뭐든지 편집하고'XML을 'x86'( 'x64'또는 'anycpu'대신)로 포장하십시오. 플랫폼 값, 저장 및 마우스 오른쪽 클릭 프로젝트 및 '재 장전'.) (Beta1의 다양한 F# 버그는 플랫폼/솔루션 구성-경험을 최적보다 적게 만들기 위해 공모합니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top