Удалите папку и файлы из проекта, используя NuGet / Powershell - PullRequest
14 голосов
/ 26 апреля 2011

Я пытаюсь удалить папку 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, который успешно удаляет папку и файлы:

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 Ответ

15 голосов
/ 27 апреля 2011

Хорошо, я абсолютно уверен, что есть лучший способ, чем этот, но я никогда не использовал NuGet или Powershell до сегодняшнего дня ...: /

Я только что запустил это в моей консоли диспетчера пакетов:

$DTE.Solution.Projects | ForEach { $_.ProjectItems | ForEach { if ($_.Name -eq "Controllers") { $_.Remove() } } }

Он просматривал все элементы проектов в поисках элемента верхнего уровня, называемого «Контроллеры», а затем удалял его из проекта. Уверен, что вы можете просто изменить это на "App_Code".

Редактировать: Мой друг (который знает немного больше, чем Пауэршелл) послал это:

$DTE.Solution.Projects|Select-Object -Expand ProjectItems|Where-Object{$_.Name -eq 'Controllers'}|ForEach-Object{$_.Remove()}
...