2015-01-01 10 views
7

मैं एक सामान्य serializer एक vNext परियोजना के भीतर बनाने के लिए कोशिश कर रहा हूँ और करने के लिए 'स्ट्रिंग' से परिवर्तित नहीं कर सकते जब मैं StreamWriter के लिए निर्माता फोन यह इस संकलक त्रुटि फेंकताvNext तर्क 1: 'System.IO.Stream'

त्रुटि CS1503 तर्क 1: 'स्ट्रिंग' से परिवर्तित नहीं कर सकते करने के लिए 'System.IO.Stream' Test.ASP.NET कोर 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" 
      } 
     } 
    } 
} 
+0

यह गैर-बीटा कोड के साथ काम करता वास्तव में है? –

+1

'नया स्ट्रीमवाइटर (पथ, एन्कोडिंग) 'ओवरलोड [पोर्टेबल क्लास लाइब्रेरीज़ द्वारा समर्थित है] (http://msdn.microsoft.com/en-us/library/system.io.streamwriter%28v=vs.110% 29.aspx) जबकि पथ के साथ संस्करण नहीं है। क्या आप इसका इस्तेमाल कर सकते हैं? – dbc

+0

@SteveWellens यदि मैं एक सामान्य कोड (गैर vnext) कंसोल प्रोजेक्ट के साथ एक ही कोड चलाता हूं तो यह काम करेगा। मुझे यकीन नहीं है कि यह आपके लिए क्या मतलब है। आपकी टिप्पणी के लिए धन्यवाद। – Azran

उत्तर

10

है, क्योंकि यह CoreCLR पर उपलब्ध नहीं है davidfowl

यही से जवाब है। नई StringWriter (File.OpenWrite (पथ)) के बजाय

भविष्य में संदर्भ मैं कहाँ देख सकते हैं कि एक समारोह उपलब्ध है या नहीं के लिए प्रयोग करें?

https://github.com/dotnet/corefx भंडार पर फ़ाइल समस्याएं। वे नए ढांचे में चीजें क्यों गायब हैं, यह स्पष्ट करने में सक्षम होंगे। मैं मानता हूं कि इस विशेष ओवरलोड को हटा दिया गया था क्योंकि नए पैकेजों के बीच लेयरिंग समस्याएं थीं।

विधानसभा जिसमें StreamWriter सीधे संदर्भित FileStream नहीं होना चाहिए:

new StreamReader(path) 

new StreamReader(new FileStream(path, options)). 
संबंधित मुद्दे