【问题标题】:Trouble with System.Net on .NET core Ubuntu 14.04.NET 核心 Ubuntu 14.04 上的 System.Net 出现问题
【发布时间】:2016-03-08 02:07:11
【问题描述】:
  • 我通过sudo apt-get install dotnet安装了dotnet
  • 我使用dotnet new hello-world 模板创建了一个项目。它构建并运行。
  • 架构:amd64 (dpkg -s)
  • 版本:1.0.0.001598-1 (dpkg -s)

然后我想开始使用库 System.Net,所以我更改了模板。我直接从 Microsoft API 文档中添加了 using 指令和代码 sn-p。

我收到错误,特别是在 System.Net 命名空间中找不到类。请注意,编译器不会抱怨我的 using 不好(即无法识别命名空间),它只是找不到该命名空间中的类型。

让我感到惊讶的原因是因为在api docs 中,这些类被指定为 .Net 核心的一部分,所以我认为它们可以“开箱即用”。

dotnet restore; dotnet update 产生:

sr/share/dotnet/bin/dotnet compile-csc @/home/scratch/newapp/obj/Debug/dnxcore50/dotnet-compile.rsp returned Exit Code 1
/home/scratch/newapp/Program.cs(10,13): error CS0246: The type or namespace name 'HttpWebRequest' could not be found (are you missing a using directive or an assembly reference?)
ome/scratch/newapp/Program.cs(11,33): error CS0103: The name 'WebRequest' does not exist in the current context
ome/newapp/Program.cs(11,18): error CS0246: The type or namespace name 'HttpWebRequest' could not be found (are you missing a using directive or an assembly reference?)

(原文如此:截断的 shell 输出为原样)

这是我的代码。

using System;
using System.Net;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            HttpWebRequest myReq =
                (HttpWebRequest)WebRequest.Create("http://www.contoso.com/");
            Console.WriteLine("Hello World!");
        }
    }
}

我错过了什么? System.Net 不是在 .Net Core 附带的标准库中吗?我浏览了 CoreFX,但我觉得它只是 .Net Core 的一个组件,我应该拥有它。如果没有,我该如何安装?

【问题讨论】:

    标签: .net ubuntu ubuntu-14.04 .net-core system.net


    【解决方案1】:

    使用http://packagesearch.azurewebsites.net 搜索丢失的包。然后你可以修改你的project.json来添加对找到的包的引用,比如System.Net.Primitives、System.Net.Sockets等等。

    但是,就您而言,WebRequest 在任何 RC1 包中尚不可用。您将不得不等到 Microsoft 移植它,或者干脆切换到其他类,例如 HttpClient。

    API 参考网站目前并不准确,因为我相信它是针对 RC1 和 RC2 之间的某些构建构建的。 API 参考中出现了许多类型,但它们仅在 Microsoft 发布 RC2 时可用。

    【讨论】:

    • 好吧,我现在完全糊涂了,Azure 与这些有什么关系? .NET核心文档中的api引用指定了这个命名空间,编译器识别命名空间,但我还是要在项目中显式调用命名空间依赖?这些不是核心?
    • 哦,我明白了,包查找只是托管在 azurewebsites.net 上。
    • 好的,我去了那里,但我想直接在 System.net 命名空间中使用类,而不是 .primitives 或 .utilities 或其他任何东西。我需要什么包裹? dotnet.github.io 上的 API reference 表明,例如,System.Net.WebRequest 存在。我需要从包裹搜索中获得什么?
    • 考虑到这一切,我真的在这里咬我的舌头(如果你不能说一些好听的话......关于微软......),但我真的很想知道的一件事是你说“微软移植它”。不是应该移植它的“基金会/社区”吗?
    • @WilburWhateley 一般来说,这个阶段主要是微软在推动这个项目,它发布了.NET Framework的源代码,为社区的介入打下了坚实的基础。BSD移植完全由社区贡献。我认为社区会在 1.0 上做更多事情,但目前还不是很多。
    猜你喜欢
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 2019-03-27
    • 2021-08-18
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多