14

NuGet パッケージのインストール中に、プロジェクトから App_Start フォルダーを削除しようとしています。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 はアイテムがプロジェクトの一部であると認識しているため、アイテムには黄色の警告が表示されます。

私が必要としているのは、これらの項目への参照をプロジェクトからプログラムで削除する方法です。何か案は?

4

1 に答える 1

15

わかりました、これよりも良い方法があると確信していますが、今日まで NuGet や Powershell を使用したことがありません... :/

パッケージマネージャーコンソールでこれを実行しました:

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

「Controllers」と呼ばれるトップレベルのアイテムを探して、すべてのプロジェクト アイテムをループし、プロジェクトから削除しました。これを「App_Code」に変更することもできます。

編集:私の友人(私より少しPowershellを知っている)がこれを送ってくれました:

$DTE.Solution.Projects|Select-Object -Expand ProjectItems|Where-Object{$_.Name -eq 'Controllers'}|ForEach-Object{$_.Remove()}
于 2011-04-27T17:33:24.470 に答える