【发布时间】: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