У меня есть собственный процесс сборки TFS для моего проекта веб-приложения, который также выполняет публикацию.Для этого я пытаюсь удалить текущее место публикации перед копированием скомпилированных источников из сборки.
Это работает (в большинстве случаев), за исключением случаев, когда файлы заблокированы, потому что есть люди, заходящие на сайт, как правило, это не проблема, так как большую часть времени сборки происходят, когда никто не получает к ним доступ (так как онитолько разработки и сборки QA).
Чтобы попытаться исправить те крайние случаи, когда каталог публикации не может быть удален, я копирую файл app_offline.htm в каталог и жду 4 секунды, прежде чем пытаться удалить остальныесайта.Это работает, и я не получил никаких ошибок от этого шага, однако, когда я пытаюсь удалить app_offline.htm после завершения публикации.Я получаю следующую ошибку:
Невозможно отменить рабочий процесс.Агент должен быть перезапущен.Подробности: Операция не может быть выполнена, потому что WorkflowApplication f670d4fb-d9e3-4f33-bc3d-925faa925e04 прерван.
Удаление создается с использованием пользовательского CodeActivity (так как рабочий процесс TFS не имеет удаления).
public sealed class DeleteFile : CodeActivity
{
// Define an activity input argument of type string
[RequiredArgument]
public InArgument<string> File { get; set; }
public InArgument<int?> Tries { get; set; }
// If your activity returns a value, derive from CodeActivity<TResult>
// and return the value from the Execute method.
protected override void Execute(CodeActivityContext context)
{
// Obtain the runtime value of the Text input argument
int tries = Tries.Get(context) ?? 1;
for (int i = 0; i < tries; i++)
{
try
{
System.IO.File.Delete(File.Get(context));
break;
}
catch (System.IO.IOException)
{
if (i == tries - 1)
throw;
Thread.Sleep(TimeSpan.FromSeconds(4));
}
}
}
}
Позже я добавил аргумент «Попытки», чтобы попытаться выяснить причину этой ошибки.
Однако следует отметить, что при просмотре журнала вышеуказанная ошибка не помещаетсяпод действием DeleteFile, но только в верхней части журнала, и нет других ошибок или предупреждений.
Наконец, наш пользователь tfsbuild имеет разрешения на удаление в каталоге публикации (у него нет проблем с удалением остальной частикаталог просто app_offline.htm