F#random类在调用.NextDouble()时抛出BadImageFormatException

F#random类在调用.NextDouble()时抛出BadImageFormatException,random,f#,badimageformatexception,Random,F#,Badimageformatexception,我根据一本关于F#的书制作了一个小应用程序,但是当我调用rand.NextDouble()方法时,它抛出了一个BadImageFormatException,乍一看似乎与图像有关,所以我不知道我应该在这里做什么 我使用的是VS community 2013,使用的是visual F#2013。我有64位Windows7 我知道这是下一个双倍的方法,这是通过尝试一个单独的let的问题 let create_field num_asteroids = let lerp (x: float&l

我根据一本关于F#的书制作了一个小应用程序,但是当我调用rand.NextDouble()方法时,它抛出了一个BadImageFormatException,乍一看似乎与图像有关,所以我不知道我应该在这里做什么

我使用的是VS community 2013,使用的是visual F#2013。我有64位Windows7

我知道这是下一个双倍的方法,这是通过尝试一个单独的let的问题

let create_field num_asteroids =
    let lerp (x: float<'u>) (y:float<'u>) (a:float) =
        x*a+y*(1.0-a)

    let rand = Random()

    [for i =1 to num_asteroids do
        let m =
            (lerp earth_mass moon_mass (rand.NextDouble()))*
            1.0e-4
        let x = lerp 0.0<m> field_size (rand.NextDouble())
        let y = lerp 0.0<m> field_size (rand.NextDouble())
        let vx = max_velocity*(rand.NextDouble()*2.0-1.0)*0.1
        let vy = max_velocity*(rand.NextDouble()*2.0-1.0)*0.1
        yield
            {
            Position = { X = x; Y = y }
            Velocity = { X = vx; Y = vy }
            Mass = m
            Name = "a"
            }
    ]
让我们创建\u字段num\u小行星=
让lerp(x:浮动)(a:浮动)=
x*a+y*(1.0-a)
设rand=Random()
[对于i=1到num_小行星
让我=
(lerp地球质量月球质量(rand.NextDouble())*
1.0e-4
设x=lerp 0.0字段大小(rand.NextDouble())
设y=lerp 0.0字段大小(rand.NextDouble())
设vx=最大速度*(rand.NextDouble()*2.0-1.0)*0.1
设vy=最大速度*(rand.NextDouble()*2.0-1.0)*0.1
产量
{
位置={X=X;Y=Y}
速度={X=vx;Y=vy}
质量=m
Name=“a”
}
]
这是错误代码:

System.BadImageFormatException未处理 消息:Asteroid_字段_1.exe中发生“System.BadImageFormatException”类型的未处理异常 其他信息:试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)

MSDN告诉我它可能与DLL文件没有以正确的格式加载有关,但我甚至不知道从哪里开始

这是完整的代码


我刚刚在FSI.exe中试用过,效果很好

我通过在visual studio中检查项目属性中的“优化代码”解决了这个问题。我从一位同学那里得到了此修复。

我通过在visual studio中检查项目属性中的“优化代码”修复了此问题。我从一个同学那里得到了这个补丁。

你是如何编译的,它在fsi中工作吗?它是一个大得多的文件,所以我不想全部复制。有什么建议吗?我在末尾链接了一个粘贴箱,我猜错误在于你的F#没有正确安装。你能在FSI中运行一个简单的例子来测试你的F#是否工作正常吗?试着改变你编译的平台。使用configuration manager在
x86
x64
之间切换
BadFormatException
是尝试在错误的体系结构上加载程序集时得到的结果。从代码上看,它与游戏相关,通常图形库依赖于架构。你如何编译它,它在fsi中工作?它是一个大得多的文件,所以我不想全部复制。有什么建议吗?我在末尾链接了一个粘贴箱,我猜错误在于你的F#没有正确安装。你能在FSI中运行一个简单的例子来测试你的F#是否工作正常吗?试着改变你编译的平台。使用configuration manager在
x86
x64
之间切换
BadFormatException
是尝试在错误的体系结构上加载程序集时得到的结果。从与游戏相关的代码来看,图形库通常依赖于体系结构。