Удаление папки и файлов из проекта с помощью 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()}