.xml fil uppdateras inte i Visual Studio

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Sep 2012

.xml fil uppdateras inte i Visual Studio

Hej!

Jag håller på med ett program och ska spara ner data till ett Xml dokument. Har en mapp inuti mitt projekt vid namn "XmlFiles" där jag lagt min .xml fil. Problemet som jag har är att när jag skriver data till .xml filen så uppdateras filen som ligger i "Debug/XmlFiles/objects.xml" men enligt Visual Studio så ser fortfarande .xml filen helt blank och ny ut.

Så min fråga är, varför uppdateras inte filen inuti Visual Studios när den liksom uppdaterats inuti mapp sökvägen?

Properties på filen är just nu "Build Action: Content, Copy to Output Directory: Copy if newer".

public Form1() { InitializeComponent(); resourceName = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @XmlFiles\objects.xml); System.Diagnostics.Debug.Assert(File.Exists(resourceName)); MessageBox.Show("File Found: " + resourceName); } private void addButton_Click(object sender, EventArgs e) { List<Object> objects = new List<Object>(); XmlSerializer serializer = new XmlSerializer(typeof(List<Object>)); objects.Add(new Object() { ID = 1, Name = "Name1" }); objects.Add(new Object() { ID = 2, Name = "Name2" }); using (FileStream stream = new FileStream(resourceName, FileMode.Open, FileAccess.Write)) { serializer.Serialize(stream, objects ); } }

CASE: Phantek Enthoo Luxe | MOBO: MSI Krait Z170 | CPU: Intel i7 6700k | RAM: Corsair Vengeance 16GB DDR4 | COOLING: H110i GT | PSU: EVGA Supernova G2 850W | GPU: GTX 780Ti 2x REF |

Trädvy Permalänk
Medlem
Plats
Borås
Registrerad
Jul 2004

Avsluta Streamen, eller flusha den. När du avsluta en Stream kommer den köra .Flush() + lite annat.

När du disposar din Stream som du gör där, betyder det inte att den kommer skriva något utan går direkt mot dispose, detta har att göra med att den normalt bara skriver när den tycker att den har tillräckligt med data att skriva, så flushar/closar man inte en stream så kan man missa data.

Skulle också rekommendera att du byte ut FileStream mot StreamWriter då den är mer gjord för att hantera text data varav FileStream mer för binär data, dock inget måste men kan orsaka problem i vissa specifika fall.

using (StreamWriter stream = new StreamWriter(resourceName)) { serializer.Serialize(stream, objects ); stream.Close(); }

Speldator: SB i7-2600k @ 4,5Ghz P8Z68-V Pro, 16GB DDR3, GTX1070
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift