【问题标题】:Null reference exception while getting TFS build details获取 TFS 构建详细信息时出现空引用异常
【发布时间】:2017-07-03 13:03:32
【问题描述】:

我正在尝试从我的 TFS 服务器获取最新的构建详细信息,但以下行引发了空引用异常。

ITestManagementTeamProject project = tms.GetTeamProject(proj.Name);

“在 Microsoft.TeamFoundation.TestManagement.Client.dll 中发生了“System.NullReferenceException”类型的未处理异常

附加信息:对象引用未设置为对象的实例。"

这是周围的代码

using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.TestManagement.Client;
class Program
{
    static void Main(string[] args)
    {
        TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(TfsTeamProjectCollection.GetFullyQualifiedUriForName("http://tfs2013-99-228:8080/tfs/si nhss"));
        tfs.EnsureAuthenticated();
        VersionControlServer vcs = tfs.GetService<VersionControlServer>();
        ITestManagementService tms = tfs.GetService<ITestManagementService>();

        TeamProject[] teamProjects = vcs.GetAllTeamProjects(true);

        IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));

        foreach (TeamProject proj in teamProjects)
        {
            IBuildDefinition[] defs = buildServer.QueryBuildDefinitions(proj.Name);

            System.Console.WriteLine(string.Format("Team Project: {0}", proj.Name));

            foreach (IBuildDefinition def in defs)
            {
                IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(proj.Name, def.Name);
                spec.MaxBuildsPerDefinition = 10;
                spec.QueryOrder = Microsoft.TeamFoundation.Build.Client.BuildQueryOrder.FinishTimeDescending;
                spec.DefinitionSpec.Name = def.Name;
                spec.Status = Microsoft.TeamFoundation.Build.Client.BuildStatus.All;

                IBuildQueryResult builds = buildServer.QueryBuilds(spec);

                if (builds.Builds.Length > 0)
                {
                    var buildDetail = builds.Builds[0];

                    ITestManagementTeamProject project = tms.GetTeamProject(proj.Name);

                    System.Console.WriteLine(string.Format("   {0} - {1} - {2}", def.Name, buildDetail.Status.ToString(), buildDetail.FinishTime));
                }
            }

            System.Console.WriteLine();
        }
    }
}

【问题讨论】:

  • 微不足道,但是您检查过tms 是否为空吗?
  • tms 不为空

标签: tfs tfsbuild


【解决方案1】:

您的参考文献可能有问题。我测试了您的脚本,它可以与安装的 Microsoft Team Foundation Server 扩展客户端 包一起使用。

  1. 删除当前引用
  2. 只需尝试通过在 包管理器控制台:

PM> 安装包 Microsoft.TeamFoundationServer.ExtendedClient -版本 15.112.1

  1. 根据您的脚本添加以下参考:

使用 Microsoft.TeamFoundation.Client;

然后再试一次。

看下面的截图,它可以正确获取项目名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多