Vnext Argument 1:无法从'string'转换为'System.IO.Stream'

时间:2015-01-01 22:54:42

标签: c# asp.net asp.net-core

我正在尝试创建一个带有Vnext项目的通用序列化程序,当我调用StreamWriter的构造函数时,它会抛出此编译器错误

  

错误CS1503参数1:无法从'string'转换为   'System.IO.Stream'Test.ASP.NET Core 5.0 Helper.cs 14

即使有一个构造函数允许指定文件的路径作为参数。

这是我的班级文件

using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

namespace Test
{
    public static class Helper
    {
        public static void SerializeToXml<T>(string path, T value)
        {
            var serializer = new XmlSerializer(typeof(T));
            using (var stream = new StreamWriter(path)) // ERROR OCCURS HERE
            {
                using (var writer = XmlWriter.Create(stream))
                {
                    serializer.Serialize(writer, value);
                }
            }
        }
    }
}

这是我的project.json文件

{
    "version": "1.0.0-*",
    "dependencies": {
    },
    "commands": {
        "run": "run"
    },
    "frameworks": {
        "aspnet50": {
            "dependencies": {

            },
            "frameworkAssemblies": {
                "System.Xml": "4.0.0.0"

            }
        },
        "aspnetcore50": {
            "dependencies": {
                "System.Console": "4.0.0-beta-22231",
                "System.Xml.XmlSerializer": "4.0.0-beta-22231",
                "System.Collections": "4.0.10-beta-22422",
                "System.Xml.ReaderWriter": "4.0.10-beta-22231",
                "System.IO": "4.0.10-beta-22231"
            }
        }
    }
}

1 个答案:

答案 0 :(得分:10)

以下是davidfowl

的答案
  

那是因为它在CoreCLR上不可用。使用新的   StringWriter(File.OpenWrite(path))改为

以备参考,我可以在哪里查看功能是否可用?

  

https://github.com/dotnet/corefx存储库上的文件问题。他们   将能够澄清新框架中缺少原因的原因。一世   相信这个特殊超载被删除的原因是因为   新包之间的分层问题。

     

包含StreamWriter的程序集不应该是直接的   引用FileStream:

new StreamReader(path)

实际上

new StreamReader(new FileStream(path, options)).