Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从TFS获取文件列表_C#_Tfs - Fatal编程技术网

C# 从TFS获取文件列表

C# 从TFS获取文件列表,c#,tfs,C#,Tfs,我试图弄清楚如何从TFS中的特定文件夹($/theproject/trunk/setup/)中获取文件列表,而不将它们放在本地文件夹中 到目前为止,我已成功连接、创建工作区和工作文件夹: var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/")); var projects = TfsTeamProjectCollectionFactory

我试图弄清楚如何从TFS中的特定文件夹($/theproject/trunk/setup/)中获取文件列表,而不将它们放在本地文件夹中

到目前为止,我已成功连接、创建工作区和工作文件夹:

        var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/"));
        var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server);
        var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));

        var workspace = versionControl.CreateWorkspace(AppDomain.CurrentDomain.FriendlyName + "-installer", versionControl.AuthorizedUser);
        try
        {
            WorkingFolder folder = new WorkingFolder("$/theproject/trunk/setup/", "C:\\aTempFolder");
            workspace.CreateMapping(folder);

            //this would get all files to the local folder, right?
            //what should I do instead to just get a file list?
            workspace.Get(); 

        }
        finally
        {
            workspace.Delete();
        }
是这样做的:

        var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/"));
        var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server);
        var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));

        var newestDate = DateTime.MinValue;
        Item newestItem = null;
        var items = versionControl.GetItems("$/theproject/trunk/setup/*.msi");
        foreach (var item in items.Items)
        {
            if (item.ItemType != ItemType.File)
                continue;

            if (item.CheckinDate > newestDate)
            {
                newestItem = item;
                newestDate = item.CheckinDate;
            }
        }
        newestItem.DownloadFile("C:\\temp\\" + Path.GetFileName(newestItem.ServerItem));
试试这个:

ItemSet items = versionControl.GetItems(folder.ServerItem, RecursionType.Full);

如果你在我的答案之前加上它(或者如果它更详细的话),我会接受你的答案。现在您只有+1.References:“Microsoft.TeamFoundation.Client”和“Microsoft.TeamFoundation.VersionControl.Client”需要将RecursionType.Full作为参数添加到方法GetItems中,否则它不会从子文件夹中带来项目。