Могу ли я обойти сборку с закрытым возвратом после проверки файла во время отдельного процесса сборки? TFS 2010

#msbuild

#msbuild

Вопрос:

У меня есть 2 определения сборки, настроенных для решения, 1 — это ночная сборка, которая запускается каждую ночь, а другое — сборка с закрытым возвратом, которая запускается, когда разработчики пытаются проверить новые изменения в системе управления версиями. В ночной сборке используется пользовательский шаблон, который увеличивает версии сборки с помощью метода, который был слегка изменен по сравнению с методом Эвальда Хоффмана. Когда файл возвращается с помощью пользовательского действия для проверки файлов, я получаю ошибку сборки:

Не удалось завершить вашу регистрацию, поскольку это влияет на следующие определения закрытой сборки Project GatedBuld. Для завершения регистрации вам нужно будет поставить в очередь сборку из набора shelveset Gated_2011-11-08_09.31.42.6934; ДОМЕН TFSBuildAccount.

В настоящее время я не смог найти способ обойти эту сборку с закрытым возвратом (сборки CI запрещены с помощью комментария * NO_CI * check in).

Я попытался установить разрешение «Переопределить проверку возврата с помощью сборки» для учетной записи службы сборки (через безопасность для закрытой сборки), но, насколько я знаю, это предотвратит закрытую сборку только при проверке кода вручную (с помощью флажка, представленного в диалоговом окне «Закрытая регистрация»). Что я ищу, так это способ обойти закрытую сборку при автоматической проверке изменений

Есть предложения?

Как всегда, заранее спасибо за любую помощь

Ответ №1:

Когда вы проверяете свои изменения программно, вы можете создать объект WorkspaceCheckInParameters и присвоить его переопределенному свойству Checkin значение true . Следующий код позволит обойти закрытую проверку (а также CI):

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

Обратите внимание, что вам необходимо предоставить разрешение на обход закрытой проверки учетной записи, которая выполняет проверку для всех затронутых определений сборки. В данном случае это учетная запись службы сборки для ночной сборки.

Ответ №2:

Я написал код обновления версии сборки в Powershell и не смог найти более тонкий код « OverrideGatedCheckIn = true » для Powershell, и все, что я сделал, это переместил файлы версий сборки (SharedAssembly.vb amp; SharedAssembly.cs) в папку с именем SharedAssembly и исключил их из рассмотрения для процесса GatedCheck-In.

введите описание изображения здесь