SharePoint からファイルとそのバージョン番号を取得する
-
09-06-2019 - |
質問
すべての設計者が揃うまでの一時的な応急処置として、私たちは現在、作業中に大量の XML 構成ファイルを手作業で作成しています。これに関する問題の 1 つは、ファイルのバージョン管理です。これは、ファイルを更新するときにバージョン番号の更新を忘れてしまうためです (人間は一般に完璧を求めるので、これは当然のことです)。
したがって、Sharepoint にファイルを保存するときに、Sharepoint からファイルをプルダウンしてバージョン番号を取得し、Sharepoint からファイルにバージョン番号を自動的に入力/更新するスクリプトを作成できるはずだと考えています。これは、「最新」ファイルが必要な場合に、スクリプトを実行して、正しいバージョン番号を持つ最新のファイルを取得できることを意味します (これにはさらに若干の意味があるため、スクリプトを使用する理由は、自動スクリプトの利点だけではありません)。バージョン管理)。
Sharepointからファイルとバージョン番号を取得する方法を知っている人はいますか?
解決
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();
}
}
}
SPSite と SPWeb はアンマネージ オブジェクトであるため、using() ステートメントはメモリ リークが発生しないようにするためのものです。
編集:バージョン番号がライブラリ フィールドにプロモートされている場合は、上記の for ループ内で次のようにしてアクセスできます。
itm["FieldName"]
他のヒント
12 ハイブ内のソース ファイルではなく、リストまたはライブラリ内のドキュメントについて話していると仮定します。その場合、各ライブラリにはバージョン管理が組み込まれています。各ライブラリから利用可能なフォーム ライブラリ設定をクリックすると、それにアクセスできます (もちろん、適切な管理者権限が必要です)。そこから、[バージョニング設定] を選択し、プロセスに適した設定を選択します。
コードでバージョン番号を取得する場合は、 SPListItem
コレクションの中から、 SPListItemVersionCollection
各項目に付けられた名前付きバージョン。