Управление версиями SPFileVersionCollection и SPListItemVersionCollection кажется непоследовательным мне. Несоответствие не было бы проблемой мне, но порядок сортировки.
Я могу понять управление версиями ListItems, поскольку они хранятся в порядке убывания:
SPContext.Current.ListItem.Versions.Count -> 5
SPContext.Current.ListItem.Versions[0].VersionId -> 1026 (2.2 latest version)
SPContext.Current.ListItem.Versions[1].VersionId -> 1025 (2.1)
SPContext.Current.ListItem.Versions[2].VersionId -> 1024 (2.0)
... [4].VersionId -> (oldest version)
Однако я не могу понять, как номера версий сохраняются для объекта библиотеки документа:
SPContext.Current.ListItem.File.Versions.Count -> 4
SPContext.Current.ListItem.File.Versions[0].ID -> 512 (1.0 oldest one)
SPContext.Current.ListItem.File.Versions[1].ID -> 513 (1.1)
SPContext.Current.ListItem.File.Versions[2].ID -> 1025 (2.1 latest version)
SPContext.Current.ListItem.File.Versions[3].ID -> 1024 (2.0 (EDIT: IsCurrentVersion = True))
Они, ни в порядке возрастания, ни убывание, но что-то смешалось.
Есть ли какая-либо причина для команды SharePoint решить сохранить версии SPFile как этот? И они ожидают, что я пишу свой собственный метод для получения последней версии или есть ли встроенный для этого?
Примечание: Позвольте мне указать на тот SPListItem. Файл не является пустым для объектов библиотеки документа.
Подумал, что выведу некоторую информацию о SPFileVersionCollection в консольном приложении, и оказалось, что:
Ах, у меня было ложное предположение, что последняя черновая версия документа должна считаться последней. Конечно, последняя ОПУБЛИКОВАННАЯ версия является самой последней!
Тем не менее, остерегайтесь непоследовательности.