在启用了次要版本的文档库中,UpdateOverwriteVersion()会创建次要版本。
线程 - http://social.technet.microsoft.com/Forums/en-US/sharepointgeneral/thread/e0d1af63-3705-4b58-95c5-f0f92f86a23f - 解释了类似的问题,并提出解决方案作为关闭次要版本控制,更新项目并打开次要版本控制。
但是,我无法暂时关闭次要版本控制设置,因为其他用户可能正在使用相同的库来上传/更改其文档,关闭设置可能会影响其操作。
还有其他解决方案吗?
谢谢和问候,
Arjabh
答案 0 :(得分:1)
If the goal is to update the fields without creating multiple versions see the code:
Microsoft.SharePoint.Client.File lp_newFile = lp_web.GetFileByServerRelativeUrl(lp_uri.LocalPath);
lp_context.Load(lp_newFile);
lp_context.ExecuteQuery();
//check out to make sure not to create multiple versions
lp_newFile.CheckOut();
ListItem lp_item = lp_newFile.ListItemAllFields;
listItem["Created"] = info.SourceFile.CreationTime;
listItem["Modified"] = info.SourceFile.LastWriteTime;
listItem.Update();
// use OverwriteCheckIn type to make sure not to create multiple versions
lp_newFile.CheckIn(string.Empty, CheckinType.OverwriteCheckIn);
答案 1 :(得分:1)
尝试listItem.SystemUpdate(false)而不是listItem.UpdateOverwriteVersion()
答案 2 :(得分:0)
使用这样的东西(对我有用):
//Disable minor versions on your list or library, if your item is in a major version (maybe use a file.Publish before)
list.EnableMinorVersions = false;
list.Update();
//Update item and overwrite your major version
ListItem lp_item = lp_newFile.ListItemAllFields;
lp_item["Created"] = info.SourceFile.CreationTime;
lp_item["Modified"] = info.SourceFile.LastWriteTime;
lp_item.UpdateOverwriteVersion();
//Enable minor versions
list.EnableMinorVersions = true;
list.Update();