0

我在 WPF 中创建了一个工具,供我们的开发人员轻松跟踪特定的 DLL。这样他们就知道哪些项目有过时的 DLL(或者没有被广泛实施的 DLL 版本,比如 2.2,但我们使用的是 2.1)。现在它扫描目录,提供一个起点,以获取有关指定 DLL 的信息。

这很好用,但是如果这可以直接通过 TFS API 完成,就会提出一个问题。我想知道是否可以在无需映射/获取最新版本的情况下获取文件版本。换句话说,循环浏览所有项目(在它们的最新版本中)并直接通过 TFS API 收集 DLL 的版本号。一种方法是让某人将所有项目映射到硬盘驱动器上并直接在根目录上运行该工具。但是,这不是很方便。

我想知道是否有人可以指出我正确的方向。这甚至可能吗?

4

1 回答 1

0

有一个非常简单的解决方案,尽管它需要您从 TFS 下载文件。在任何情况下,您都需要一个用户帐户才能找到 DLL 文件。下面是一些代码片段:

要获取 DLL 文件列表:

        TfsTeamProjectCollection tfcollection = new TfsTeamProjectCollection(new Uri("URL"), new System.Net.NetworkCredential("USERNAME", "PASSWORD"));
        VersionControlServer server = tfcollection.GetService<VersionControlServer>();

        //Obtain all DLLs. You can narrow this down to the specific one's you want
        ItemSet items = server.GetItems("$/*.dll", RecursionType.Full);

为了下载文件,我稍微简化了一些事情以使其更容易。要循环浏览文件,您可以:

        foreach (Item item in items.Items)

现在您要下载文件。这很慢,但会阻止算法重新创建 TFS 文件夹结构:

       string[] split = item.ServerItem.ToString().Split('/');

       //This may not work if you have files in the root
       item.DownloadFile(split[split.Length - 1]);

这将下载您的 DLL 文件,以便您可以从中提取数据。不幸的是,您不能直接通过 TFS 执行此操作,因此我们需要一份副本。现在,您可以提取 DLL 版本:

     FileVersionInfo.GetVersionInfo(localFileLocation).FileVersion

您呈现数据的方式显然取决于您。为简单起见,我只是将带有 item.ServerItem 的版本号转储到文本文件中。

如果有人正在寻找类似的东西,希望这会有所帮助!

于 2013-09-20T21:11:43.553 回答