【问题标题】:The type or namespace Http does not exist in the namespace Flurl命名空间 Flurl 中不存在类型或命名空间 Http
【发布时间】:2015-01-27 22:37:36
【问题描述】:

开始一个新的可移植类库项目,我添加了Flurl.Http NuGet package,这似乎也降低了它的所有依赖项,正如预期的那样。

但是,当我添加 using Flurl.Http 指令和一些简单的代码时,例如

using System.Threading.Tasks;
using Flurl;
using Flurl.Http;

public class ClientRepository
{
    public async Task<string> Connect()
    {
        var result = await "http://example.com"
            .AppendPathSegment("/login")
            .PostUrlEncodedAsync(new { username = "you", password = "password" }).ReceiveJson();
        return result.token;
    }
}

我得到编译错误

命名空间中不存在类型或命名空间名称“Http” 'Flurl'(您是否缺少程序集参考?)

奇怪的是,智能感知识别 .Http 命名空间或扩展方法 (PostUrlEncodedAsync) 没有问题

这个最基本的 PCL 项目可能缺少什么?

也许我的 package.config 文件很有价值,所以它也在这里:

<packages>
  <package id="Flurl" version="1.0.5" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="Flurl.Http" version="0.4.1" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="Microsoft.Bcl" version="1.1.9" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="Microsoft.Net.Http" version="2.2.22" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="Newtonsoft.Json" version="6.0.3" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
  <package id="PCLStorage" version="0.9.6" targetFramework="portable-net45+sl50+MonoAndroid10+xamarinios10+MonoTouch10" />
</packages>

【问题讨论】:

  • 我刚刚创建了一个 PCL 并导入了 Flurl 并且编译没有问题。但是我的 packages.config 和你的不一样。虽然它具有相同的 id 和版本,但目标框架是“portable-net45+win+wpa81+wp80”,所以我建议这就是您的问题所在。您可能需要编辑您的问题以详细说明您正在使用的项目类型/IDE/扩展,因为我没有选择在 VS Ultimate 2013 Update 4 中针对该框架开箱即用。
  • 我还应该添加当我将 Flurl 添加到控制台应用程序时,它特别要求我添加对 System.Net.Http 的引用。现在,当我用 Google 搜索“Mono System.Net.Http”时,我得到了一系列结果:Mono 和 Xamarin 与 System.Net.Http 不兼容。较新的帖子表明这已得到纠正,但这是大约 2013 年的一个问题,所以这就是我开始寻找麻烦的地方。如果输出窗口中的详细模式没有给您确切的问题,请感到惊讶。

标签: c# .net portable-class-library flurl


【解决方案1】:

我能够使用从您的 packages.config 中收集的目标平台组合进行重现(非常有帮助)。问题似乎出在 Silverlight 5 上。这曾一度奏效。我的预感是在一个依赖库中已经放弃了对它的支持,尽管我还没有证实这一点。

无论如何,如果您在没有 SL5 支持的情况下也能过得去(也许您做不到),我已经确认,针对 Flurl.Http 记录支持的所有其他人的新 PCL 确实使用您的代码构建:

(旁注:我在尝试更改现有项目中的 PCL 目标时遇到了一些问题 - 您可以从头开始着手,以免让自己头疼。)

对于任何不便,我深表歉意。我将更新docs 中支持的目标列表。我欢迎任何建议/拉取请求以使其与 SL5 一起使用。

【讨论】:

  • 请注意,除非我选择了 Windows 8,否则我无法关闭 Silverlight5,但一旦我这样做了,我就可以编译它。我的主要目标是 Xamarin.iOS,尽管我会说我也希望使用 Silverlight。我很想知道它是否可以解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多