private void EnsurePublish(File file, string publishComment) { // Load dependent data. var parentList = file.ListItemAllFields.ParentList; if (!parentList.IsPropertyAvailable("EnableMinorVersion") || !parentList.IsPropertyAvailable("EnableModeration") || !file.IsPropertyAvailable("Level") || !file.IsPropertyAvailable("ListItemAllFields")) { _clientContext.Load(parentList); _clientContext.Load(file); _clientContext.ExecuteQuery(); } var isDirty = false; if (file.Level == FileLevel.Checkout) { file.CheckIn(string.Empty, CheckinType.MajorCheckIn); isDirty = true; } if (parentList.EnableMinorVersions && file.Level != FileLevel.Published) { file.Publish(publishComment); isDirty = true; } if (parentList.EnableModeration && Convert.ToInt32(file.ListItemAllFields["_ModerationStatus"]) != 0) { file.Approve(string.Empty); isDirty = true; } if (isDirty) { file.RefreshLoad(); _clientContext.ExecuteQuery(); } }