C# TFS仅签入特定的文件和文件夹,而不是所有挂起的更改

C# TFS仅签入特定的文件和文件夹,而不是所有挂起的更改,c#,C#,我通过C#应用程序与TFS通信仍有问题。我正在尝试使用PendingChanges来签入由我的应用程序创建的文件,但经过数小时的谷歌研究和阅读,我还没有找到一种只签入特定文件的方法。每当我签入时,TFS只需签入当前已签出的所有项目以及我告诉它要签入的项目。有没有办法从PendingChanges对象中删除某些项,或者创建一个全新的PendingChanges对象,其中只包含我需要签入的文件?这种全有或全无的行为似乎十分可笑。请帮忙 Workspace myWorkspace = createWo

我通过C#应用程序与TFS通信仍有问题。我正在尝试使用PendingChanges来签入由我的应用程序创建的文件,但经过数小时的谷歌研究和阅读,我还没有找到一种只签入特定文件的方法。每当我签入时,TFS只需签入当前已签出的所有项目以及我告诉它要签入的项目。有没有办法从PendingChanges对象中删除某些项,或者创建一个全新的PendingChanges对象,其中只包含我需要签入的文件?这种全有或全无的行为似乎十分可笑。请帮忙

Workspace myWorkspace = createWorkspace();
// Show our pending changes.
PendingChange[] pendingChanges = myWorkspace.GetPendingChanges();
rt.Text += "Your current pending changes: \n";
foreach (string f in checkinItems)
{
    foreach (PendingChange pendingChange in pendingChanges)
    {
        if (Path.Combine(localPath, f) != pendingChange.LocalItem)
        {
            toCheckIn.Add(Path.Combine(localPath, f));
            rt.Text += "Found one!" + Path.Combine(localPath, f).ToString() + "\n";
            break;
        }
        else
        {
            rt.Text += pendingChange.LocalItem + " Not ours. \n";
        }
    }
}



myWorkspace.PendAdd(toCheckIn.ToArray(), true);


// Checkin the items we added.
int changesetNumber = myWorkspace.CheckIn(pendingChanges, currentUserName + ": " + toCheckIn + " from CokomImport");
rt.Text += "Checked in changeset " + changesetNumber;

这是我目前掌握的代码。它过滤掉了我不需要的东西,但最终没有什么区别,因为我需要在原始的PendingChanges中签入我需要添加的东西

在VS中,我可以从几个已签出的文件中签入一个特定的文件到TFS,所以这是可能的。@Flobbo:请显示一些代码如果您使用VS2012,在团队资源管理器的“挂起的更改”窗口中,您可以显式地“排除”文件/文件夹等。在您删除排除之前,这些文件/文件夹将不会签入。@HansKesting:我完全同意,我只是还没有找到解决办法。通过VS2010一切都很好,但使用API似乎是不可能的。
Workspace.Checkin
将对check-in(已挂起)的更改作为其第一个参数。您正在传递调用
Workspace.GetPendingChanges()
时获得的原始
pendingChanges
-因此,是的,这将检入所有挂起的更改。您的意思是将
传递给checkin.ToArray()
以进行签入吗?