Удаление папки и файлов из проекта с помощью NuGet/Powershell
Я пытаюсь удалить папку App_Start из моего проекта во время установки пакета NuGet. Документация для NuGet здесь:
http://nuget.codeplex.com/wikipage?title=Creating%20a%20Package
Говорит:
$project.Object эквивалентен http://msdn.microsoft.com/en-us/library/ms170626.aspx.
Я не могу найти много информации об этом интерфейсе, которая мне очень помогает.
У меня есть следующая Powershell script, которая успешно удаляет папку и файлы:
param($installPath, $toolsPath, $package, $project)
$DirInfo = New-Object System.IO.DirectoryInfo($installPath)
$appDir = New-Object System.IO.DirectoryInfo($DirInfo.Parent.Parent.FullName)
$fullPath = [IO.Path]::Combine($appDir.FullName, $appDir.Name, "App_start")
Remove-Item $fullPath -recurse
(Я знаю, что путь здесь не гарантируется, но этот пакет предназначен только для внутреннего использования)
Но проект все еще имеет ссылку на элементы, поэтому элементы отображаются с желтым предупреждением, потому что Visual Studio считает, что элементы являются частью проекта.
Мне нужен способ удаления ссылки на эти элементы из проекта программно. Есть идеи?
Ответы
Ответ 1
Хорошо, я абсолютно уверен, что есть лучший способ, чем это, но я никогда не использовал NuGet или Powershell до сегодняшнего дня...:/
Я просто запустил это в консоли диспетчера пакетов:
$DTE.Solution.Projects | ForEach { $_.ProjectItems | ForEach { if ($_.Name -eq "Controllers") { $_.Remove() } } }
Он зациклировал все объекты проектов, которые искали элемент верхнего уровня под названием "Контроллеры", а затем удалили его из проекта. Довольно уверен, что вы можете просто изменить это на "App_Code".
Изменить: Мой друг (кто знает немного больше Powershell, чем я) послал это:
$DTE.Solution.Projects|Select-Object -Expand ProjectItems|Where-Object{$_.Name -eq 'Controllers'}|ForEach-Object{$_.Remove()}