Las llamadas a `Workspace.PendAdd` no agregan elementos

Tengo la siguiente función que se llama en un bucle en dos nuevos proyectos para agregar al control de origen. Cada iteración del bucle obtiene el código fuente, lo copia a la carpeta, crea un proyecto de equipo tfs, crea un espacio de trabajo para ese proyecto y luego intenta agregar el código al control de fuente.

static void Main(string[] args) {
    var tfsWorkItems = _<IWorkItems>();
    var workItems = tfsWorkItems.GetProjectsToMigrate();
    var tfs = _<ITfs>();
    var logFilePath = new DirectoryInfo("C:\\log");
    var workingDirectory = new DirectoryInfo("C:\\m");
    Cleanup(workItems, tfs, logFilePath, workingDirectory);
    var svn = _<ISvn>();
    var app = _<IApplication>();
    foreach (var workItem in workItems)
    {
        var root = Path.Combine(workingDirectory.FullName, workItem.Id.ToString());
        var svnBase = Path.Combine(root, "s");
        var localWorkspacePath = Path.Combine(root, "t");
        var tfsBase = Path.Combine(localWorkspacePath, workItem.TfsProjectName, "Main");
        var tfsProject = workItem.ProjectType.ToLower() == "php" ? Path.Combine(tfsBase, "src")
                                                                    : tfsBase;
        svn.CheckoutFromSvn(workItem.SvnLocation, svnBase);
        app.CopyToTfsFolderStructure(svnBase, tfsProject);
        tfs.CreateTeamProject(workItem.TfsProjectName, logFilePath);
        tfs.CreateWorkspace(workItem.WorkspaceName, localWorkspacePath);
        tfs.AddToSourceControl(workItem.WorkspaceName, localWorkspacePath, workItem.TfsProjectName);
    }
}

Hay dos proyectos. El primer proyecto funciona correctamente, pero el segundo no. El segundo proyecto crea el proyecto y el área de trabajo, pero en AddToSourceControl

public void AddToSourceControl(string workspaceName, string localPath, string projectName) {
    var tfs = new TfsTeamProjectCollection(_collection);
    var vcs = tfs.GetService<VersionControlServer>();
    var user = vcs.AuthorizedUser;
    var workspace = vcs.GetWorkspace(workspaceName, user);
    var serverPath = workspace.GetServerItemForLocalItem(Path.Combine(localPath, projectName, "Main"));
    var itemSpec = new ItemSpec[] {
        new ItemSpec(serverPath, RecursionType.Full)
    };
    workspace.PendAdd(serverPath, true);

    // doesn't return anything
    var pendingSets = vcs.QueryPendingSets(
        itemSpec, workspace.Name, user, true);
    var pendingChanges = pendingSets.Aggregate(new List<PendingChange>(), (acc, item) => {
        acc.AddRange(item.PendingChanges);
        return acc;
    });
    var parameters = new WorkspaceCheckInParameters(pendingChanges, "svn to tfs migration") {
        OverrideGatedCheckIn = ((CheckInOptions2)vcs.SupportedFeatures & CheckInOptions2.OverrideGatedCheckIn) == CheckInOptions2.OverrideGatedCheckIn,
        PolicyOverride = new PolicyOverrideInfo("migration triggered check-in", null),
        SuppressEvent = true,
    };
    workspace.CheckIn(parameters);
}

workspace.PendAdd(serverPath, true) siempre devuelve cero para el segundo proyecto, independientemente de qué proyecto sea el segundo. El primer proyecto siempre se completa correctamente. No importa qué proyecto sea el segundo. El segundo proyecto siempre devuelve cero elementos. Obviamente quiero que todos los proyectos se agreguen al control de origen correctamente. ¿Que esta pasando aqui?

Respuestas a la pregunta(5)

Su respuesta a la pregunta