Visual Studio 15 SP 1
Это не сама студия, но тесно связанная штука... причем из старых...
Задача - дописать в ХМЛ-файл (во фрагмент данных) очередную порцию данных.
Решается - элементарно:
using(StreamWriter sw = File.AppendText(filename.DataFilename))
using(XmlWriter xmlDataWriter = XmlWriter.Create(sw, xws))
{
// работаем по добавлению данных
}
Код получился не слишком красивым и повторять его каждый раз не хочется - убираем создание XmlWrite в какой-нибудь класс и пишем:
using(XmlWriter xmlDataWriter = filename.XmlDataWriter)
{
// работаем по добавлению данных
}
XmlDataWriter имплементируем как:
XmlWriter xmlDataWriter = null;
public XmlWriter XmlDataWriter
{
get
{
if (xmlDataWriter == null || xmlDataWriter.WriteState == WriteState.Closed)
{
XmlWriterSettings xws = new XmlWriterSettings();
xws.ConformanceLevel = ConformanceLevel.Fragment;
xws.Indent = false;
xws.NewLineHandling = NewLineHandling.None;
xws.OmitXmlDeclaration = true;
xmlDataWriter = XmlWriter.Create(File.AppendText(filename.DataFilename), xws);
}
return xmlDataWriter;
}
}
Тестим - все работает...
Теперь пишем два раза подряд :
using(XmlWriter xmlDataWriter = filename.XmlDataWriter)
{
// работаем по добавлению данных
}
using(XmlWriter xmlDataWriter = filename.XmlDataWriter)
{
// работаем по добавлению данных
}
И имеем... облом... на втором открытии... да-да, несмотря на using и тот факт что XmlWriter закрыт... и файл - тоже закрыт...