public static bool SaveXmpSidecar(this TagLib.Image.File file, TagLib.File.IFileAbstraction resource) { var xmp_tag = file.GetTag (TagLib.TagTypes.XMP, false) as XmpTag; if (xmp_tag == null) { // TODO: Delete File return true; } var xmp = xmp_tag.Render (); try { using (var stream = resource.WriteStream) { stream.SetLength (0); using (var writer = new StreamWriter (stream)) { writer.Write (xmp); } resource.CloseStream (stream); } } catch (Exception e) { Log.DebugFormat ("Sidecar cannot be saved: {0}", resource.Name); Log.DebugException (e); return false; } return true; }