.xml fil uppdateras inte i Visual Studio

Permalänk
Medlem

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

Permalänk
Medlem

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

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.