错误FS0193:内部错误:无法加载类型'位置'来自汇编&FSI-ASSEMBLY,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'

时间:2014-03-25 09:29:39

标签: types compiler-errors f# fsi

当我构建我的解决方案时,一切都很顺利。 但是,当我尝试在FSI中运行脚本时,我得到以下内容:

error FS0193: internal error: Could not load type 'Position' from assembly 'FSI-ASSEMBLY, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

我试过browse但我仍然不明白导致错误的原因。 从MS connect,似乎有一个issue with the fsi compiler that has already been resolved

定义Position的代码片段如下所示:

type Position = 
    struct   
        val Shares: NrShares
        val BuyPrice: Price 
        new (nrShares: NrShares, buyPrice: float) = { Shares = nrShares; BuyPrice = buyPrice}

        /// Merge two positions.
        static member inline (+!) (one: Position, other: Position) =
            let addToPosition (one: Position) (other: Position) = 
                let nrShares = one.Shares + other.Shares
                let avgprice = (one.Shares * one.BuyPrice + other.Shares * other.BuyPrice) / nrShares
                Position (nrShares, avgprice)

            // Sell out or partially an existing position. Buy price is not updated
            let sellFromPosition (one: Position) (other: Position) = 
                let newShares = one.Shares - other.Shares
                Position (newShares, one.BuyPrice)

            if (sign(one.Shares) = sign(other.Shares))
            then addToPosition one other
            else sellFromPosition one other
end   

这是什么问题? 谢谢!

编辑一个

在我当前的设置中,我有一个fsx脚本LoadScript.fsx,其中我使用#r指令加载所需的dll文件,然后使用#open指令打开所需的模块。

LoadScript.fsx由主脚本调用,我编写实际计算代码。 fsx脚本链允许我隐藏样板代码。我只是向客户展示主要脚本和计算,一切看起来都很整洁。

这个"链" fsx个脚本一直在运行。直到昨天,我从新的.fs文件中添加了新模块。

我正在尝试隔离生成问题的代码部分。 这很难,因为error消息并未指向特定的代码段。

奇怪的是,当我直接跑LoadScript.fsx时,一切都没有任何问题。 当我从另一个脚本调用LoadScript.fsx时,Fsi编译失败:

#if INTERACTIVE
#load "LoadScript.fsx"
#endif

这种奇怪的行为可能是什么原因? 任何提示?

0 个答案:

没有答案