2008-08-28 10 views
1

En tant que stopgap temporaire jusqu'à ce que tous les concepteurs soient en place, nous sommes en train de lancer un tas de fichiers de configuration XML au travail. L'un des problèmes avec ceci est le formatage de fichiers parce que les gens oublient de mettre à jour les numéros de version lors de la mise à jour des fichiers (ce qui est prévisible car les humains aspirent généralement à la perfection). Par conséquent, je pense que lorsque nous stockons les fichiers dans SharePoint, je devrais être capable d'écrire un script pour extraire les fichiers de Sharepoint, obtenir le numéro de version et entrer/mettre à jour automatiquement le numéro de version de Sharepoint dans le fichier. Cela signifie que quand quelqu'un veut les "derniers" fichiers, il peut exécuter le script et obtenir les derniers fichiers avec les numéros de version corrects (il y en a un peu plus que cela). versioning).Récupérer des fichiers et leurs numéros de version à partir du point de partage

Est-ce que quelqu'un sait comment obtenir les fichiers + numéros de version de Sharepoint?

Répondre

1

Il existe un moyen de le faire via les services Web, mais j'ai fait plus avec l'implémentation de gestionnaires d'événements personnalisés. Voici un peu de code qui fera ce que vous voulez. Gardez à l'esprit que vous ne pouvez l'exécuter qu'à partir du serveur. Vous pouvez donc envelopper ce service dans un service Web pour autoriser l'accès à partir de vos périphériques intégrés. En outre, vous devrez référencer Microsoft.SharePoint.dll dans ce code.

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(); 
     } 
    } 
} 

Les déclarations en utilisant() doivent veiller à ce que vous ne créez pas une fuite de mémoire, comme SPSite et SPWeb sont des objets non gérés.

Edit: Si le numéro de version a été promu à un champ bibliothèque, vous pouvez y accéder par les éléments suivants dans la boucle ci-dessus:

itm["FieldName"] 
1

Je suppose que vous parlez de documents dans une liste ou une bibliothèque, pas de fichiers source dans la ruche 12. Si c'est le cas, chaque bibliothèque a un versionnement intégré. Vous pouvez y accéder en cliquant sur les paramètres de la bibliothèque de formulaires disponibles dans chaque bibliothèque (avec les privilèges d'administration appropriés, bien sûr). À partir de là, sélectionnez Paramètres de versionnement et choisissez une configuration qui fonctionne pour votre processus. Pour obtenir le numéro de version dans le code, si vous tirez un SPListItem de la collection, il existe une SPListItemVersionCollection versions nommées attachées à chaque élément.

Questions connexes