相关疑难解决方法(0)

如何在F#3.0中使用pseq?

在F#3.0中使用PSeq的最佳方法是什么?

F#3.0没有动力装置,没有证据表明PSeq包含在3.0中.

parallel-processing f#

8
推荐指数
1
解决办法
1130
查看次数

无法在infer.net中加载FSharp.Core版本4.0.0有趣//在dll中使用硬链接依赖?

我正在尝试使用Infer.Net(用于概率编程的F#库)并在VS11 Beta中运行示例导致错误:

无法加载文件或程序集'FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.

如果我打开使用Reflector中的infer.net样本的dll,一个,probcomp.dll,说它无法自动找到"FSharp.Core,Version = 4.0.0.0",我需要手动选择位置.

这两件事是否相关?是否有可能使用"固定路径"引用编译probcomp.dll,现在它在我的机器上是不一样的?

PS:当然fsharp项目从头开始工作正常..

PS2:视觉工作室中参考的dll没有显示任何未找到它们的迹象.我可以在对象浏览器中打开它们.

UPDATE

在程序开始时错误发生,没有时间看到任何东西.然而,它发生在程序内:如果未调用以下行

let coinsD = inferExpr <@ coins @> 
Run Code Online (Sandbox Code Playgroud)

然后错误不会发生.有了它,在另一个例子中引发了以下错误.不出所料,它来自dll,它的行为在反射器中很奇怪.

无法加载文件或程序集'FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

在对象浏览器中,所述函数的签名非常奇怪:

public static IDistribution<b>inferExpr<b>(**unknown-type e**)
Run Code Online (Sandbox Code Playgroud)

是的,在我告诉他在打开dll 在哪里找到Fsharp 4.0.0时,在反射器中,它有签名

public static IDistribution<b> inferExpr<b>(FSharpExpr<b> e);
Run Code Online (Sandbox Code Playgroud)

这个dll必须有某种奇怪的硬链接依赖关系,而且反射器比VS更聪明(或者不是......)来解决它.

为了从坏事中获益,如果你对这个dll中可能发生的事情有所了解,这可能是一个学习的机会.

.net dll f# reflector .net-4.0

3
推荐指数
1
解决办法
3260
查看次数

标签 统计

f# ×2

.net ×1

.net-4.0 ×1

dll ×1

parallel-processing ×1

reflector ×1