我有一个需要在F#中引用的C#dll。我可以在.fs文件中做到这一点,但我似乎无法在F#脚本(.fsx)中使用它。这很奇怪,因为在我的脚本中,我引用F#dll没有问题。我认为C#dlls和F#dll基本相同。
编辑:
我有两个dll(1)csharp.dll和(2)fsharp.dll分别用csharp和fsharp构建。我用它们来引用它们:
#r "bin\Debug\csharp.dll"
#r "bin\Debug\fsharp.dll"
编译器识别的。出现这种情况的行如下所示:
let new_object = new fsharp.type(Observable<csharp.type>)
我在fsharp.dll中创建了一个对象,它接受csharp.dll中定义的类型的观察者。当我尝试在FSharp交互式中运行它时,我收到以下错误:
错误FS0074:通过&#39; csharp.type&#39;引用的类型在未引用的程序集中定义。您必须添加对程序集的引用&#39; csharp&#39;。
没有意义的是csharp.type已成功用于前一行。但是当我们用fsharp.type引入csharp.type时,我突然得到一个错误,说csharp类型缺少一个程序集引用,即使问题似乎与fsharp.type有关。
答案 0 :(得分:1)
您似乎还需要在脚本System.Reactive.dll
中或在定义类Observable<T>
的地方引用
答案 1 :(得分:0)
@Petr是正确的。您需要添加所有引用及其引用。
如果您使用的是Visual Studio,我建议您安装Visual F#Power Tools。安装后,右键单击项目下的“引用”,然后选择“为F#interactive生成引用”。
这将生成(并保持更新!)文件
因此,在您的F#脚本中(假设它位于项目根目录中),您只需执行
#load "Scripts/load-project.fsx"
这些生成的文件应该进入您选择的版本控制。