我应该如何为 dnx451 和 dnxcore50 引用 HttpClient?
How should I reference HttpClient for dnx451 and dnxcore50?
我应该如何使用 project.json
文件引用 HttpClient
?
我希望两个框架都能工作:dnx451
和 dnxcore50
.
这是我目前对 project.json
文件的尝试。 (我删除了不相关的部分。)
{
"dependencies": {
"Microsoft.Net.Http": "2.2.29",
"Microsoft.Net.Http.Headers": "1.0.0-beta4",
"System.Net.Http": "4.0.0-beta-22816"
},
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0"
}
},
"dnxcore50": { }
}
}
发现我列出的依赖项是一个反复试验的过程。
使用此 project.json
文件,dnxcore50
上下文正确解析了此示例代码块中的所有 类,但无法解析 HttpRequestMessage
、HttpMethod
,以及 MediaTypeWithQualityHeaderValue
与 dnx451
上下文:
var request = new HttpRequestMessage(HttpMethod.Get, "...");
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/..."));
var response = await client.SendAsync(request);
var model = await response.EnsureSuccessStatusCode().Content.ReadAsAsync<SomeModel>();
截至发布之时(2015 年 6 月 11 日),这是对 dnx451
和 dnxcore50
都适用的组合。
{
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "5.2.3"
},
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0"
}
},
"dnxcore50": {
"dependencies": {
"System.Net.Http": "4.0.0-beta-22816"
}
}
}
}
我将 Timothy 的回答标记为有用,因为它引导我走上了正确的道路,但是这个 question/answer 也有几个月的历史了。从那时起,ASP.NET5 已经 RCed。以下是现在对我有用的:
{
"version": "1.0.0-*",
...
"dependencies": {
"System.Runtime": "4.0.21-beta-23516",
"Newtonsoft.Json": "6.0.6",
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Net.Http": "4.0.1-beta-23516"
},
"frameworks": {
"dnx451": {
"dependencies": {
}
},
"dnxcore50": {
"dependencies": {
}
}
}
}
这似乎与这种更详细的指定依赖关系的方式相似:
{
"version": "1.0.0-*",
...
"dependencies": {
"System.Runtime": "4.0.21-beta-23516",
"Newtonsoft.Json": "6.0.6",
"Microsoft.CSharp": "4.0.1-beta-23516"
},
"frameworks": {
"dnx451": {
"dependencies": {
"System.Net.Http": "4.0.1-beta-23516"
}
},
"dnxcore50": {
"dependencies": {
"System.Net.Http": "4.0.1-beta-23516"
}
}
}
}
两个版本都能正常工作,因为我能够成功调试 HttpClient 调用。
您可以忽略除 System.Net.Http 之外的其他依赖项。
我应该如何使用 project.json
文件引用 HttpClient
?
我希望两个框架都能工作:dnx451
和 dnxcore50
.
这是我目前对 project.json
文件的尝试。 (我删除了不相关的部分。)
{
"dependencies": {
"Microsoft.Net.Http": "2.2.29",
"Microsoft.Net.Http.Headers": "1.0.0-beta4",
"System.Net.Http": "4.0.0-beta-22816"
},
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0"
}
},
"dnxcore50": { }
}
}
发现我列出的依赖项是一个反复试验的过程。
使用此 project.json
文件,dnxcore50
上下文正确解析了此示例代码块中的所有 类,但无法解析 HttpRequestMessage
、HttpMethod
,以及 MediaTypeWithQualityHeaderValue
与 dnx451
上下文:
var request = new HttpRequestMessage(HttpMethod.Get, "...");
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/..."));
var response = await client.SendAsync(request);
var model = await response.EnsureSuccessStatusCode().Content.ReadAsAsync<SomeModel>();
截至发布之时(2015 年 6 月 11 日),这是对 dnx451
和 dnxcore50
都适用的组合。
{
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "5.2.3"
},
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0"
}
},
"dnxcore50": {
"dependencies": {
"System.Net.Http": "4.0.0-beta-22816"
}
}
}
}
我将 Timothy 的回答标记为有用,因为它引导我走上了正确的道路,但是这个 question/answer 也有几个月的历史了。从那时起,ASP.NET5 已经 RCed。以下是现在对我有用的:
{
"version": "1.0.0-*",
...
"dependencies": {
"System.Runtime": "4.0.21-beta-23516",
"Newtonsoft.Json": "6.0.6",
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Net.Http": "4.0.1-beta-23516"
},
"frameworks": {
"dnx451": {
"dependencies": {
}
},
"dnxcore50": {
"dependencies": {
}
}
}
}
这似乎与这种更详细的指定依赖关系的方式相似:
{
"version": "1.0.0-*",
...
"dependencies": {
"System.Runtime": "4.0.21-beta-23516",
"Newtonsoft.Json": "6.0.6",
"Microsoft.CSharp": "4.0.1-beta-23516"
},
"frameworks": {
"dnx451": {
"dependencies": {
"System.Net.Http": "4.0.1-beta-23516"
}
},
"dnxcore50": {
"dependencies": {
"System.Net.Http": "4.0.1-beta-23516"
}
}
}
}
两个版本都能正常工作,因为我能够成功调试 HttpClient 调用。
您可以忽略除 System.Net.Http 之外的其他依赖项。