1

我写了这个简单的代码

let downloadFile (wc : WebClient) (webUrl : string) (filePath : string) =
    wc.DownloadFile(webUrl, filePath) // no problem
    try
        wc.DownloadFile(webUrl, filePath) // problem!! why???
    with
    | ex -> printfn "%s" ex.Message; ()

这里对 wc.DownloadFile 的第一次调用完美编译。

在 Try 中放置相同的调用会使编译器抛出此错误

无法从此代码位置访问带有 2 个参数的成员或对象构造函数“DownloadFile”。方法“DownloadFile”的所有可访问版本都采用 2 个参数。

再次。我正在ubuntu上的monodevelop上尝试这个。现在我没有我的 windows 机器来检查这是否适用于 windows F#。

4

1 回答 1

0

您正在使用哪个版本的 Ubuntu 以及您的系统上安装了哪个版本的 Mono?什么版本的 F#?您的目标是什么版本的 .NET 框架?

System.Net.WebClient.DownloadFile在您的 Mono 版本中,可能实现不完整或有错误。它也可能是运行时本身或您构建的 F#。

它对我来说看起来很完整,但我想这取决于你的 Mono 是什么时候构建的。您可以将运行时的日期与 WebClient.cs 的提交历史相匹配,以了解可能缺少的内容。

https://github.com/mono/mono/blob/master/mcs/class/System/System.Net/WebClient.cs https://github.com/mono/mono/commits/master/mcs/class/System /System.Net/WebClient.cs

我可以告诉你,问题不在于 MonoDevelop。它适用于 Windows 8 上的 MonoDevelop 和 Xamarin Studio。通常我是 Linux 用户,但我目前只有 Windows 机器。如果我有时间,我明天将在 RHEL6 上测试您的代码片段(使用 Mono 和 F# 的最新版本)。

于 2013-09-18T05:08:28.087 回答