我正在开发一个流程,该流程涉及将某些数据文件签入到具有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中的门控(权限假设)有想法?
答案 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过程之外。
答案 1 :(得分:-1)
当您设置门禁登记工作区时,可以尝试使用此功能。