【问题标题】:connect to tfs and download the files present in it VS2010连接到 tfs 并下载其中的文件 VS2010
【发布时间】:2015-12-03 21:19:24
【问题描述】:

我想连接到 TFS 并下载其中的文件。我正在使用 VS2010 并尝试了以下代码。但似乎我在某个地方出错了:

GetItem() 和 CopyTo() 方法的“非静态字段方法需要对象引用”

我的代码没有下载所有文件。

C#代码:

static void Main(string[] args)
    {
        string teamProjectCollectionUrl = "https://YourTfsUrl/tfs/YourTeamProjectCollection";
        string filePath = "C:\project\myfile.cs";

        TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(teamProjectCollectionUrl));
        VersionControlServer versionControlServer = teamProjectCollection.GetService<VersionControlServer>();

        Item item = versionControlServer.GetItem(filePath, VersionSpec.Latest);

        string fileString = string.Empty;

        using (Stream stream = item.DownloadFile())
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                stream.CopyTo(memoryStream);


                using (StreamReader streamReader = new StreamReader(new MemoryStream(memoryStream.ToArray())))
                {
                    fileString = streamReader.ReadToEnd();
                }
            }
        }

        Console.WriteLine(fileString);
        Console.ReadLine();
    }

有人可以帮我找出正确的方法吗?

【问题讨论】:

  • “但我好像哪里出错了。” - 你能详细说明一下吗?
  • 我想下载 TFS 服务器中的所有文件。即使是添加的新文件,也应该下载。但是我的代码没有下载所有文件。此外,对于 GetItem() 和 CopyTo() 方法,我收到错误“非静态字段方法需要对象引用”。 @罗伊
  • 感谢 UserAR。我已将您的评论纳入您的上述问题中。
  • 好的,我能知道原因和解决方法吗? @罗伊

标签: c# visual-studio-2010 tfs


【解决方案1】:

试试这样的...

    static void Main(string[] args)
    {
        string teamProjectCollectionUrl = "http://myserver:8080/tfs/DefaultCollection";
        string serverPath = "$/My Project/My SubFolder";
        string localPath = @"c:\temp\download";

        TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(teamProjectCollectionUrl));
        VersionControlServer versionControlServer = teamProjectCollection.GetService<VersionControlServer>();

        foreach (Item item in versionControlServer.GetItems(serverPath, VersionSpec.Latest, RecursionType.Full, DeletedState.NonDeleted, ItemType.Any, true).Items)
        {
            string target = Path.Combine(localPath, item.ServerItem.Substring(2));

            if (item.ItemType == ItemType.Folder && !Directory.Exists(target))
            {
                Directory.CreateDirectory(target);
            }
            else if (item.ItemType == ItemType.File)
            {
                item.DownloadFile(target);
            }
        }
    }

【讨论】:

  • 能否请您解释一下代码 sn-p 或“服务器路径”和“本地路径”变量?
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
相关资源
最近更新 更多