#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.