Fedora 25 中的 Dotnet:System.Net 中不存在 WebClient
Dotnet in Fedora 25: WebClient does not exist in System.Net
我在 Fedora 25 上使用 Dotnet。我使用 these instructions 为我的发行版安装带有 RPM 的 Dotnet,因为 Fedora 25 没有官方软件包:
一切正常:
$ dotnet --version
1.0.0-preview2-1-003175
我正在尝试 运行 一个使用 Visual Code 创建的简单 WebClient 示例:
using System;
using System.Net;
using System.Net.Http;
using System.Net.WebClient;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
using (var webClient = new WebClient())
{
var url = [someurl];
var htmlCode = webClient.DownloadData(url);
var base64 = Convert.ToBase64String(htmlCode);
}
}
}
}
请注意,我将 using
语句一个接一个地添加到此问题中,运行ning:
$ dotnet build
Project cbsearchui_test (.NETCoreApp,Version=v1.1) will be compiled because expected outputs are missing
Compiling test_project for .NETCoreApp,Version=v1.1
/usr/lib64/dotnetcore/dotnet compile-csc
@test_project/obj/Debug/netcoreapp1.1/dotnet-
compile.rsp returned Exit Code 1
test_project/Program.cs(4,18): error CS0234:
The type or namespace name 'WebClient' does not exist in the namespace
'System.Net' (are you missing an assembly reference?)
Compilation failed.
0 Warning(s)
1 Error(s)
Time elapsed 00:00:00.6661503
这是我的project.json
,由VS Code自动生成:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": "dnxcore50"
}
}
}
我很难理解这是否与我在 Fedora 25 上的特定 Dotnet 安装有关 and/or。类似的问题似乎指的是 compatibility issues, profiling, bad usage statement 等。但其中 none 似乎适用于此问题。
我也尝试将 netcoreapp
的依赖项更改为版本 1.0.0 而不是 1.1.0,但同样的错误仍然存在。
作为评论的结论,答案是:WebClient
不能在 (Fedora) Linux 中使用,因为 .NET 2.0 不可用。
解决方案是改用 HttpClient
。
我在 Fedora 25 上使用 Dotnet。我使用 these instructions 为我的发行版安装带有 RPM 的 Dotnet,因为 Fedora 25 没有官方软件包:
一切正常:
$ dotnet --version
1.0.0-preview2-1-003175
我正在尝试 运行 一个使用 Visual Code 创建的简单 WebClient 示例:
using System;
using System.Net;
using System.Net.Http;
using System.Net.WebClient;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
using (var webClient = new WebClient())
{
var url = [someurl];
var htmlCode = webClient.DownloadData(url);
var base64 = Convert.ToBase64String(htmlCode);
}
}
}
}
请注意,我将 using
语句一个接一个地添加到此问题中,运行ning:
$ dotnet build
Project cbsearchui_test (.NETCoreApp,Version=v1.1) will be compiled because expected outputs are missing
Compiling test_project for .NETCoreApp,Version=v1.1
/usr/lib64/dotnetcore/dotnet compile-csc
@test_project/obj/Debug/netcoreapp1.1/dotnet-
compile.rsp returned Exit Code 1
test_project/Program.cs(4,18): error CS0234:
The type or namespace name 'WebClient' does not exist in the namespace
'System.Net' (are you missing an assembly reference?)
Compilation failed.
0 Warning(s)
1 Error(s)
Time elapsed 00:00:00.6661503
这是我的project.json
,由VS Code自动生成:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": "dnxcore50"
}
}
}
我很难理解这是否与我在 Fedora 25 上的特定 Dotnet 安装有关 and/or。类似的问题似乎指的是 compatibility issues, profiling, bad usage statement 等。但其中 none 似乎适用于此问题。
我也尝试将 netcoreapp
的依赖项更改为版本 1.0.0 而不是 1.1.0,但同样的错误仍然存在。
作为评论的结论,答案是:WebClient
不能在 (Fedora) Linux 中使用,因为 .NET 2.0 不可用。
解决方案是改用 HttpClient
。