Wieder einmal hat die SharePoint API ein seltsames Verhalten für uns Entwickler auf Lager und ich bin genau reingerannt.
Ich wollte den Checkin-Kommentar aller Versionen eines Listenelement einer Dokumentbibliothek auslesen. Intuitiv habe ich diesen Code versucht, der mir NICHT das korrekte Ergebnis lieferte.
SPListItem item = ... foreach (SPListItemVersion itemVersion in item.Versions) { string comment = itemVersion["_CheckinComment"].ToString(); }
Vielmehr wird der gleiche Checkin-Kommentar ausgegeben.
Die Lösung des Problems liegt gar nicht soweit entfernt: Man muss das Checkin-Kommentar nicht aus dem SPListItemVersion-Objekt sondern aus dem zugehörigen SPFileVersion-Objekt auslesen:
SPListItem item = ... foreach (SPListItemVersion itemVersion in item.Versions) { string comment; if (!itemVersion.IsCurrentVersion) { SPFileVersion fileVersion = item.File.Versions.GetVersionFromID(itemVersion.VersionId); comment = fileVersion.CheckInComment; } else { comment = item.File.CheckInComment; } }