为什么 WebClient 无法解析?

Why is WebClient unresolvable?

我想使用这个代码:

public void SendFile(string uri, string filepath)
{
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/xml");
        byte[] response = client.UploadFile(uri, "POST", filepath);
        return Encoding.ASCII.GetString(response);
    }
}

...但我得到了可怕的 "The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)"

根据 this,WebClient 在 .NET 3.5 中可用(这是一个 .NET 3.5 / Windows CE 项目)。

无法找到是因为这是一个 Windows CE / Compact Framework 项目,Visual Studio 假装它不识别 WebClient?有没有解决方法,还是我又一次注定失败?

您解释 MSDN 链接的方式完全错误,但可以理解。

Microsoft 决定以 "isolated" 的方式构建 .NET Compact Framework/XNA/Silverlight,因此您不能依赖一般的 MSDN 链接来判断 class 是否可用于此类撕裂的框架.

http://msdn.microsoft.com/en-us/library/w8xd02k7(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/ms172548(v=vs.90).aspx

而 Visual Studio 巧妙地遵循了这些解析规则,告诉您 WebClient class 不存在。

以 CF 为目标的开发人员在某种程度上注定要失败,即当遇到缺失 classes 时,您必须寻找替代方案,有时还必须复制 Mono 的源代码才能完成某些任务。

由于 Microsoft 开源 .NET 核心源代码,您也可以在 https://github.com/dotnet/corefx

上复制它们的源文件