0

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

但是,当我添加 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;
    }
}

我得到编译错误

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

奇怪的是,智能感知识别 .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>
4

1 回答 1

1

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

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

Flurl.Http PCL 支持

(旁注:我在尝试更改现有项目中的 PCL 目标时遇到了问题——从一个干净的石板开始,您可能会省去一些麻烦。)

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

于 2015-01-28T03:38:30.673 回答