Использование PowerShell и TFS.exe для обновления и удаления файлов из проектов - PullRequest
3 голосов
/ 02 апреля 2012

Я использую PowerShell для изменения ряда файлов конфигурации в рамках решения.Решение находится под контролем TFS 2010.

Решение имеет много проектов, и все файлы конфигурации представляют собой файлы XML.Самое простое - если мне просто нужно изменить файл, я проверяю его с помощью команды checkout, затем сохраняю файл, когда я закончу.Все хорошо.Я захожу в Visual Studio и вижу, что измененные файлы обновляются с ожидающими изменениями, как и следовало ожидать

. Часть, с которой я сталкиваюсь, это когда у меня есть файл конфигурации, который больше не нужен и может быть удален.Использование команды delete фактически помечает файл для ожидающего удаления, но не изменяет файл проекта, в котором содержится удаленный файл.

Когда я удаляю файл через Visual Studio, он автоматически проверяети изменяет файл проекта для меня.Я не получаю тот же результат при использовании удаления из командной строки.

Мне не практично делать это вручную, так как я удаляю более 1000 файлов.

Любая помощь будет в значительной степенипризнателен!

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Здесь работают два компонента. Когда вы работаете внутри VS, система проекта обрабатывает все файловые команды (добавляет, удаляет, редактирует и т. Д.), А затем вызывает объектную модель TFS для фактического ожидания изменений в TFS. Система проекта также отвечает за удаление ссылки из файла проекта. OM TFS не знает, является ли файл частью проекта или нет, когда он запускается вне Visual Studio.

Если у вас есть список XML-файлов, которые вам нужно удалить, лучше всего написать сценарий, который считывает их и удаляет их из файла проекта (конечно, после ожидания редактирования файла проекта).

-Taylor, Ведущий разработчик управления версиями TFS

1 голос
/ 05 апреля 2012

Спасибо всем за ваши ответы.После долгих раскопок, проб и ошибок я понял это.Это было намного проще, чем я делал.

Короче говоря, я использовал DTE и запускал свой скрипт из VS, используя консоль PowerShell.Это выглядело примерно так:

$mySolution = $dte.Solution
$projectItem = $mySolution.FindProjectItem($fileToRemove)

if ( $projectItem -ne $null )
{                    
    $projectItem.Remove()                    
}

Выполнение команды Remove () в ProjectItem проверяет соответствующий проект и соответственно редактирует его.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...