Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sharepoint获取文件及其版本号_Sharepoint_Versioning - Fatal编程技术网

从sharepoint获取文件及其版本号

从sharepoint获取文件及其版本号,sharepoint,versioning,Sharepoint,Versioning,在所有的设计人员就位之前,作为一个临时的权宜之计,我们目前正在手动启动一整套xml配置文件。其中一个问题是文件版本控制,因为人们在更新文件时忘记了更新版本号(这是预期的,因为人类通常都很糟糕) 因此,我认为,当我们将文件存储在Sharepoint中时,我应该能够编写一个脚本,从Sharepoint中下拉文件,获取版本号,并自动将Sharepoint中的版本号输入/更新到文件中。这意味着,当有人想要“最新”的文件时,他们可以运行脚本,并获得版本号正确的最新文件(比这稍微多一些,所以使用脚本的原因不

在所有的设计人员就位之前,作为一个临时的权宜之计,我们目前正在手动启动一整套xml配置文件。其中一个问题是文件版本控制,因为人们在更新文件时忘记了更新版本号(这是预期的,因为人类通常都很糟糕)

因此,我认为,当我们将文件存储在Sharepoint中时,我应该能够编写一个脚本,从Sharepoint中下拉文件,获取版本号,并自动将Sharepoint中的版本号输入/更新到文件中。这意味着,当有人想要“最新”的文件时,他们可以运行脚本,并获得版本号正确的最新文件(比这稍微多一些,所以使用脚本的原因不仅仅是自动版本控制的好处)


有人知道如何从Sharepoint获取文件+版本号吗?

我假设您谈论的是列表或库中的文档,而不是12单元中的源文件。如果是这样,每个库都有内置的版本控制。您可以通过单击每个库提供的表单库设置来访问它(当然,具有适当的管理员权限)。从中选择版本控制设置,然后选择适用于您的流程的设置


至于在代码中获取版本号,如果您从集合中提取一个
SPListItem
,则每个项都会附加一个
SPListItemVersionCollection
命名版本。

有一种通过web服务实现的方法,但我在实现自定义事件处理程序方面做得更多。这里有一段代码,可以实现您想要的功能。请记住,您只能从服务器执行此操作,因此您可能希望将其封装在web服务中,以允许从嵌入式设备进行访问。此外,您还需要在此代码中引用Microsoft.SharePoint.dll

using (SPSite site = new SPSite("http://yoursitename/subsite"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPListItemCollection list = web.Lists["MyDocumentLibrary"].GetItems(new SPQuery());
        foreach(SPListItem itm in list) {
            Stream inStream = itm.File.OpenBinaryStream();
            XmlTextReader reader = new XmlTextReader(inStream);
            XmlDocument xd = new XmlDocument();
            xd.Load(reader);
            //from here you can read whatever XML node that contains your version info
            reader.Close();
            inStream.Close();
        }
    }
}
using()语句用于确保不会造成内存泄漏,因为SPSite和SPWeb是非托管对象

编辑:如果版本号已升级为库字段,则可以通过上面的for循环中的以下内容访问它:

itm["FieldName"]