System.IO.StreamWriter 在 .netcore 1.1 中没有字符串构造函数

System.IO.StreamWriter has no string constructor in .netcore 1.1

我正在 VS2017 社区版下的 .NET Core V1.1 中迈出我的第一步。

我将一些代码块移植到一个 ASP.NET 核心项目,该项目利用 System.IO.StreamWriter:

string fileName = "Hello_world.txt";

using (StreamWriter file = new StreamWriter(fileName))
{   
    // do stuff...
}

有了这个我得到一个编译器错误:

error CS1503: Argument 1: cannot convert from 'string' to 'System.IO.Stream'

另一方面,.NET API 文档明确指出可以使用带字符串的构造函数,请参阅 here

谁能告诉我为什么没有接收字符串的构造函数以及在哪里可以找到正确的 API 文档?

StreamWriter 对象实际上是 Stream 对象的包装器。您应该创建一个 FileStreamMemoryStream 或另一种 Stream 并将其传递给 StreamWriter 构造函数。

在 .NET Framework 中,采用字符串的构造函数实际上在后台创建了一个 FileStream

StreamWriter 采用字符串参数的构造函数仅在 .NET Core 2.0 及更高版本中可用。您可以在 https://apisof.net/catalog/System.IO.StreamWriter..ctor(String)

查找空房情况

同时,您可以创建一个FileStream,正好是what the constructor taking a string does

    string path = "foo.txt";
    using (var stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, 4096, FileOptions.SequentialScan))
    using (var streamWriter = new StreamWriter(stream, System.Text.Encoding.UTF8, 1024, false))
    {
        streamWriter.WriteLine("hey");
    }

您的问题可以通过使用 .NET Framework 项目而不是 .NET Core 项目来解决。

所有 11 个构造函数都应在 .NET Framework 项目中可用。

这帮我修好了。