当我构建我的解决方案时,一切都很顺利。 但是,当我尝试在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
这种奇怪的行为可能是什么原因? 任何提示?