2008-08-28 74 views
1

作为所有设计师到位之前的临时临时工,我们目前正在手动启动一大堆xml配置文件。其中一个问题是文件版本控制,因为人们在更新文件时忘记更新版本号(这是人们通常认为的完美)。从分享点获取文件及其版本号

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

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

回答

1

有一种方法可以通过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是非托管对象。

编辑:如果版本号已晋升为库场,你可以通过循环内的下列访问它上面:

itm["FieldName"] 
1

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

至于获取代码中的版本号,如果您从集合中获取SPListItem,则会为每个项目附加一个名为Versions的SPListItemVersionCollection