2015-01-01 10 views
7

Sto cercando di creare un serializzatore generica withing un progetto vNext e quando chiamo il costruttore per StreamWriter getta questo errore di compilazionevNext Argomento 1: non può convertire da 'stringa' a 'System.IO.Stream'

errore CS1503 Argomento 1: non può convertire da 'stringa' per 'System.IO.Stream' Test.ASP.NET Nucleo 5,0 Helper.cs 14

anche se c'è un costruttore che permette di specificare un percorso per un file come argomento.

questo è il mio file di classe

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); 
       } 
      } 
     } 
    } 
} 

Questo è il mio file 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" 
      } 
     } 
    } 
} 
+0

funziona con il codice non-Beta? –

+1

Il 'nuovo streamWriter (path, encoding)' overload [è supportato dalle librerie di classi portatili] (http://msdn.microsoft.com/en-us/library/system.io.streamwriter%28v=vs.110% 29.aspx) mentre la versione con solo il percorso non lo è. Puoi usare quello? – dbc

+0

@SteveWellens Se eseguo lo stesso codice con un normale progetto di console (non vnext) funzionerà. Non sono sicuro che sia questo ciò che intendevi. Grazie per il tuo commento. – Azran

risposta

10

Ecco la risposta da davidfowl

Ecco perché non è disponibile su CoreCLR. Utilizzare nuova StringWriter (File.OpenWrite (percorso)) invece

Per riferimento futuro in cui posso controllare se una funzione è disponibile o no?

Problemi di file nel repository https://github.com/dotnet/corefx. Loro saranno in grado di chiarire perché mancano le cose nel nuovo framework. I è convinto che la rimozione di questo particolare sovraccarico sia dovuta a problemi di stratificazione di tra i nuovi pacchetti.

l'assembly che contiene StreamWriter non dovrebbe essere direttamente FileStream riferimento:

new StreamReader(path) 

realmente fa

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