如何从控制台应用程序中的tfs获取路径

时间:2012-07-17 10:33:54

标签: c#-4.0 tfs2010 code-metrics

我创建了一个控制台应用程序,它将两个参数作为输入.xml文件并输出为.htm文件

下面是访问tfs的代码

TfsTeamProjectCollection teamProjectCollection =
                TfsTeamProjectCollectionFactory.GetTeamProjectCollection
                (new Uri("http://myServer:8080/tfs/defaultcollection"));

            var buildService = (IBuildServer)teamProjectCollection.GetService(
                                                 typeof(IBuildServer));

IBuildDefinition myBuildDefination = buildService.GetBuildDefinition(
                   "MyProjectName", "MyBuildDefinationName");
            Uri lastKnownGoodBuild = myBuildDefination.LastGoodBuildUri;
            IBuildDetail myBuildDetail = buildService.GetBuild(lastKnownGoodBuild);
            string dropLocation = myBuildDetail.DropLocation;

但上面似乎并不适合我...所以我想手动传递路径。 正如您在下面的代码片段中看到的那样

// i have just added blackslash at the start and my problem solved
    string xmlfile = "\\\\myTfsPath\\CodeMetricsResult.xml";
     if (File.Exists(xmlfile))
     {
          //do something
     }

但由于某种原因......它总是会转到我的其他地方。

请告诉我我做错了什么

注意...... tfs路径在网络上,我可以访问它。

感谢,

1 个答案:

答案 0 :(得分:0)

后一部分应该适用于指向现有文件的完整输入@"C:\Folder\CodeMetricsResult.xml"
即使对于您网络中的文件也是有效@"\\netdrive\Folder\CodeMetricsResult.xml"

我试过了您的代码片段使用TFS-SDK,它工作正常。一些提示:

  • 在团队资源管理器中右键单击TeamCollection的根目录,确保http://myServer:8080/tfs/defaultcollection正确无误,选择“属性”并检查“网址”下的条目是否匹配。
  • 检查MyProjectName是否与您的TeamProject的确切名称匹配,并MyBuildDefinationName您的构建定义名称。
  • 右键单击“构建”下的MyBuildDefinitionName,然后选择“编辑构建定义”。在“BuildDefaults”下导航并检查“此版本将输出文件复制到放置文件夹”。
  • 检查MyBuildDefinionName的上一次成功构建是否仍然存在(=尚未删除)。为了做到这一点,在TeamExplorer上右键单击它,选择“ViewBuilds”并在弹出的Build Explorer中找到它。找到后,单击构建摘要中的“打开删除文件夹”,以确保TFS保留它。