2012-02-09 4 views
2

Сценарий заключается в том, что мы копируем файлы в наши папки для удаления, но мы также хотим создать символическую ссылку «Последние», которая указывает на самую последнюю сборку этого определения сборки. В прошлом я создал «Последние» папки с командой delete directory/copy, но я не хочу есть пространство на жестком диске или добавлять потенциально минут к времени выполнения сборки.Создание символических ссылок в TFS 2010 Шаблон рабочего процесса сборки

Кто-нибудь знает способ создания символических ссылок во время сборки в TFS2010/Team Build 2010? Проблема кроется в том, что вы уже должны быть подняты/выполняться как admin для создания символической ссылки, и, насколько я могу судить, сборка не запускается с повышением/в качестве администратора. Я попытался запустить службу сборки под учетной записью пользователя, которая является локальным администратором, и она все еще не работает.

Я перечислил ниже следующие вещи, которые я уже пытался сделать, чтобы получить эту работу, но ни один из них не работал:

  • Используется активностью InvokeProcess рабочего процесса для выполнения различных форм «ЦМД .exe/c mklink/d ... "непосредственно
  • Используется InvokeProcess для выполнения пакетного скрипта, содержащего команду mklink.
  • Пробовал использовать RUNAS [команда mklink] (что не получается, потому что вам предлагается ввести пароль вручную).
  • Пробовал использовать операцию InvokeProcess в утилите командной строки C#. Я написал, что запуск выполняется с помощью опции requireAdmin в файле Application Manifest. Эта утилита не запрашивает повышение (UAC) во ВСЕХ.

Если у кого есть какие-либо идеи или это уже сделано, я был бы очень признателен за любые представленные предложения.

+1

Включен или выключен UAC на вашей машине для сборки? Внутри мы запускаем службу сборки с учетной записью с правами администратора (потому что нам нужно), и это работает отлично. Я думаю, что отключение UAC может решить проблему. –

ответ

0

Предложение Duat Le об отключении UAC решило проблему.

Вот что нужно сделать, чтобы заставить это работать.

  1. UAC необходимо отключить для учетной записи, выполняющей службу сборки на сервере сборки.
  2. Учетная запись, на которой работает сервер сборки, должна быть локальным администратором на сервере, на котором вы пытаетесь установить символическую ссылку.
  3. После того, как контроль учетных записей был выключен, я использовал InvokeProcess активность в рабочий процесс, придавая ему следующие значения:

    • Аргументы:
      "/c mklink /d ""<symlink name>"" ""<directory for symlink to point to>"""

    • имя_файла: "cmd.exe"

    • WorkingDirectory: "<some dir>"

Смежные вопросы