2015-01-07 23 views
2

我有一個.net解決方案來獲取一組變更集到在配置文件[values.xml]中指定的TFS本地工作區。一旦與變更集關聯的文件下載到與工作區相關聯的本地工作文件夾中,我就有一個單獨的打包腳本,可以從這些文件中創建msi。 .net解決方案工作正常,但通常。在下列情況下會出現問題:.net解決方案獲取與TFS中的變更集相關的文件

說我有一個更改集:C717171,它與我在web.config文件上完成的更改相關聯。 配置文件[values.xml]在其中列出了此變更集,這意味着.net解決方案必須將此特定變更集導入TFS本地工作區,之後單獨的打包腳本將接管。

實際情況是,.net解決方案將所有存儲在存儲庫中的web.config文件放在需要的位置。

 var changesets = vcs.QueryHistory(repository, VersionSpec.Latest, 0, RecursionType.Full, null, versionFrom, versionTo, Int32.MaxValue, true, false).Cast<Changeset>(); 
      Workspace myworkspace = vcs.CreateWorkspace(workspaceName, tfsUser); 
      var workingFolder = new WorkingFolder(repository, workspacePath); 
      // create WorkingFolder and mapping 
      myworkspace.CreateMapping(workingFolder); 

      foreach (Changeset changeset in changesets.OrderBy(c => c.ChangesetId)) 
      { 
       var version = new ChangesetVersionSpec(changeset.ChangesetId); 

       foreach (Change change in changeset.Changes) 
       { 
        myworkspace.Get(new[] { change.Item.ServerItem }, version, RecursionType.Full, GetOptions.Overwrite); 
       } 
      } 

如有需要,我可能會提供更多詳情。

+0

是否所有下載的web.config文件,或者只是位於同一文件夾中的web.config文件以及每個變更集中每個「服務器項目」的所有子文件夾?我會看你使用RecursionType,看看是否使用Full來糾正問題。 – d3r3kk

+0

下載所有web.config文件。 – skundu

回答

3

如果你想獲得一個文件,你需要使用RecursionType.None而不是RecursionType.Full

當你是一個文件的路徑上使用RecursionType.Full,您指定要在指定的文件夾與文件名的文件,在子文件夾同名的文件。

所以,如果你指定$/Project/file.txt,它會下載$/Project/file.txt以及$/Project/subdir1/file.txt$/Project/subdir2/file.txt

指定RecursionType.None匹配準確給定的路徑。

+0

謝謝愛德華!這工作。 – skundu

相關問題