如何在不更改修改后的时间戳的情况下签入文件?
Posted
技术标签:
【中文标题】如何在不更改修改后的时间戳的情况下签入文件?【英文标题】:How do I check in a file without changing the modified timestamp? 【发布时间】:2019-01-27 02:45:18 【问题描述】:我正在将 SharePoint CSOM 与 C# 桌面应用程序一起使用,并尝试将文件签入到启用了“要求签出”设置的文档库中。我希望修改后的时间戳保持不变(不更新)。
签入后,我使用原始时间戳更新列表项。这在“需要签出”被禁用时有效,但是当它被启用时,我得到一个异常,说必须先签出文件。我曾尝试在签入前更新列表项,但在签入时它会被覆盖。
有什么办法吗?
【问题讨论】:
看到这个 - microsofttouch.fr/english/b/vince365/posts/… 如果你更新到新的 csom 你应该可以做到 【参考方案1】:lstItem.Update()
lstItem.SystemUpdate()
您可以使用 update 来更新文件和修改日期。 系统更新将更新文件而不更改修改日期。
【讨论】:
是签入导致修改后的时间戳被更新。签入文件后,我无法更改修改后的时间戳,因为它没有被签出。请记住,文档库中启用了“需要签出”设置。【参考方案2】:在您使用 SystemUpdate 更新数据后,您是否在重新签入 SPFile
时尝试过 OverwriteCheckin?
listItem.SystemUpdate();
file.CheckIn("comment", CheckinType.OverwriteCheckIn);
编辑:在您澄清您不使用草稿后,我建议您使用SPFile.UndoCheckOut()
以编程方式放弃结帐。否则,通过修改内容而不将内容标记为已修改,您本质上违背了 SharePoint 的设计。
【讨论】:
我没有,但我从post 的理解是,这应该只在您签入草稿时使用。 如果您不使用草稿,那么您要么 a) 尝试放弃结帐,要么 b) 尝试更新文件的内容。如果是,则使用SPFile.UndoCheckOut()
。如果是 b,那么您天生就违背了 SharePoint 的设计,因为正在更新的内容构成了修改。
我正在更新文件内容。如果启用了“需要签出”设置,是否有办法在文件签入后更新修改和修改的字段?有什么办法可以不用签出文件吗?
尝试将Modified字段上的ReadOnly
属性设置为false,然后在SystemUpdate
之前更改它以上是关于如何在不更改修改后的时间戳的情况下签入文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不知道 JGit 本地是不是存在的情况下签出远程分支?
在不知道确切行键的情况下在 Bigtable 中查找最新时间戳