Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TFS API-检入所有文件,无论其状态如何_C#_Tfs - Fatal编程技术网

C# TFS API-检入所有文件,无论其状态如何

C# TFS API-检入所有文件,无论其状态如何,c#,tfs,C#,Tfs,我正在进行一个项目,为我的部门扩展TFS的功能。基本上,我们有两个存储库(团队项目集合),一个是开发库,一个是生产库。开发版由我们的开发人员使用,而生产版则是我们希望存储代码副本的地方。我做了一些研究,似乎这是一个经常被要求的,从来没有提供的请求,所以我决定写一个定制的应用程序 在我的应用程序中,代码(除其他外)执行以下操作 检查开发存储库中没有有关项目的签出 是否在不创建或依赖现有工作区映射的情况下访问客户端计算机上的目录 在链接到先前创建的本地目录的生产存储库上创建临时工作区映射 查找本地

我正在进行一个项目,为我的部门扩展TFS的功能。基本上,我们有两个存储库(团队项目集合),一个是开发库,一个是生产库。开发版由我们的开发人员使用,而生产版则是我们希望存储代码副本的地方。我做了一些研究,似乎这是一个经常被要求的,从来没有提供的请求,所以我决定写一个定制的应用程序

在我的应用程序中,代码(除其他外)执行以下操作

  • 检查开发存储库中没有有关项目的签出
  • 是否在不创建或依赖现有工作区映射的情况下访问客户端计算机上的目录
  • 在链接到先前创建的本地目录的生产存储库上创建临时工作区映射
  • 查找本地目录和生产环境中签入代码之间的挂起更改
  • 检查更改
现在一切都正常了——这还是第一次,因为所有文件都标记为Add,因此签入成功。但是,在以后的时间里,它并没有像我所希望的那样工作,因为它只查找已更改的文件。我意识到这是出于设计,但我希望能够建立代码基线——每个基线(变更集)包含项目中的所有文件,而不管它们是否已更改。例如,如果项目中有52个文件,那么当我单击“获取此版本”时,我希望可以下载52个文件

我意识到TFS正在按设计执行,但我想知道是否有任何方法可以强制它执行我想要的操作。作为参考,我的登记代码如下:

// create a workspace on my production server
wSpace = vcsProdServer.CreateWorkspace(cWsMapping);
wSpace.Map(pProjectName, combinedPath);
wSpace.Get();

string files = pProjectName + "/*";
int pendingAdd = wSpace.PendAdd(files, true);
int pendingEdit = wSpace.PendEdit(files, RecursionType.Full);

// get the pending changes
PendingChange[] changes = wSpace.GetPendingChanges();

// check in the changes
wSpace.CheckIn(changes, string.Format(checkinMessage, pProjectName, DateTime.Now));

pProjectName引用TFS中的项目(例如$/MyProject),combinedPath是下载最新版本代码的本地路径。

对,我想我已经修复了,以防有人感兴趣。问题是因为我在每个进程结束时删除了wSpace,这意味着编辑或删除的文件不会被拾取。这不是一个理想的解决方案,我这样做,但它似乎工作

工作区的更新代码为:

// create a workspace on my production server
try
{
    wSpace = vcsProdServer.GetWorkspace(cWsMapping, vcsProdServer.AuthorizedUser);
}
catch
{
    wSpace = vcsProdServer.CreateWorkspace(cWsMapping);
    wSpace.Map(pProjectName, combinedPath);
}
wSpace.Get();
现在,当我获取应用于变更集的标签时,我获取所有记录