使用Powershell绕过TFS门控办理登机手续

时间:2016-09-26 17:03:09

标签: c# powershell

我正在开发一个流程,该流程涉及将某些数据文件签入到具有Gated Check-In流程的构建中。在Powershell中,我像这样编写代码:

$pendings = $ws.GetPendingChanges()
if($pendings.Count -gt 0)
{
    $ws.CheckIn($pendings, $checkInComments);
}

如果这个代码在手动登记区域,我添加了所有的DLL等等,这个代码就能完美运行。但是如果构建是Gated,那么它会失败,但是:

Exception calling "CheckIn" with "2" argument(s): 
"Your check-in could not be completed because it affects the following gated build definitions.

我在C#中找到了这个问题的以下答案,但我似乎无法将其转换为Powershell,据我所知,如果我添加了相应的DLL,我可以使用.net方法

var pendingChanges = workspace.GetPendingChanges();
if (pendingChanges.Any())
{
    WorkspaceCheckInParameters parameters = new WorkspaceCheckInParameters(pendingChanges, BuildCommonUtil.NoCICheckInComment)
    {
        OverrideGatedCheckIn = true,
    };
    workspace.CheckIn(parameters);
}

有没有人对如何绕过Powershell中的门控(权限假设)有想法?

2 个答案:

答案 0 :(得分:0)

我在互联网上查了一下,PowerShell文档,MSDN引用代码相当于Powershell的“OverrideGatedCheckIn = true”,我发现的所有内容都在非工作代码之下

Write-Host "tf.exe checkin"
        & $tfexe checkin $wsp /comment:"***NO_CI***" 
        /bypass /noprompt /recursive /override:"Auto-Build: Version Update" | Out-Null

<强>解决方案

因此,我对此问题的解决方案是将程序集版本控制文件(AssemblyInfo.vb和AssemblyInfo.cs)移动到名为SharedAssembly的文件夹中,并将它们排除在考虑GatedCheck-In过程之外。

enter image description here

答案 1 :(得分:-1)

当您设置门禁登记工作区时,可以尝试使用此功能。

  • Microsoft.TeamFoundation.VersionControl.ClientCheckInParameters.OverrideGatedCheckIn Property

请参阅:https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.checkinparameters.overridegatedcheckin(v=vs.120).aspx