そのため、一連のファイルを処理して生成し、それらをローカル ディレクトリに出力してから、既存のファイルを更新する必要があるか、新しいファイルを TFS (Team Foundation Server) プロジェクトに追加する必要があるかを判断する .NET アプリがあります。
ローカル マシンに 1 つのワークスペースがあり、この特定のマシンから作業した他のコーディング プロジェクトである 10 個の異なる作業フォルダーがあります。私の問題は、ファイルが既に TFS プロジェクトに存在し、更新が必要かどうか、または新しいファイルとしてプロジェクトに追加する必要があるかどうかを確認するときに発生します。
スニペット:
static string TFSProject = @"$/SQLScripts/"; static WorkspaceInfo wsInfo; 静的 VersionControlServer versionControl; static string argPath = "E:\\SQLScripts\\"; wsInfo = Workstation.Current.GetLocalWorkspaceInfo(argPath); TeamFoundationServer tfs = new TeamFoundationServer(wsInfo.ServerUri.AbsoluteUri); versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); ワークスペース ワークスペース = versionControl.GetWorkspace(wsInfo); ワークスペース.GetLocalItemForServerItem(TFSProject);
この時点で、ファイルが存在するかどうかを確認し、次の 2 つのいずれかを行います。ファイルが存在する場合は、そのファイルに編集用のマークを付けてから、ファイルをローカル ディレクトリに書き出します。そうでない場合は、最初にファイルのスクリプトを作成してから、ファイルをワークスペースに追加します。「変更を追跡する」ための SAS70 要件としてこれを行っているため、物理ファイルが生成しているものと同一であるかどうかは気
にしません
。
scriptoutthefile(ファイル名);
または存在しない場合は、
ファイル名 (ファイル名) をスクリプト化します。
ワークスペース.PendAdd(ファイル名、真);
わかりました、問題に到達するためのすべてです。PROJECT に対して保留中の変更を確認すると、ワークスペース内のローカル マシンにあるすべてのプロジェクトの保留中の変更がすべて取得されます。
// 保留中の変更を表示します。 PendingChange[] pendingChanges = ワークスペース.GetPendingChanges(); foreach (pendingChanges 内の PendingChange pendingChange) { 何かを... }
ワークスペースをworkspace.GetLocalItemForServerItem(TFSProject)に設定すると、その特定の作業フォルダーのオブジェクトのみが得られると思いました。
ワークスペース オブジェクトが特定の作業フォルダーのみを処理するように強制する方法はありますか?
それは意味がありましたか?前もって感謝します...