2

ソリューション エクスプローラーでは、'DependentUpon' プロジェクト アイテムは通常、他のアイテムの子として無効になっています (例: web.config / web.Debug.config)。私が抱えている問題は、パッケージのインストール時に項目が nuget/powershell を介して動的に追加されたときに、ソリューション エクスプローラーがプロジェクトをリロードしないため、項目が依存として表示されないことです。ソリューションを手動で閉じて再度開くか、プロジェクトをアンロード/リロードすると、問題が修正されます。プロジェクトの再読み込みを install.ps1 powershell スクリプトの一部として自動化したいのですが、これを行うと「Project Unloaded」エラーが発生し、nuget がインストールをロールバックします。これは、Reload コンテキスト メニューを取得する方法を知っている唯一の方法は、最初にプロジェクトをアンロードすることだからだと思います。

この呼び出しの背後で呼び出されるオブジェクトを探しています。直接実行できれば、最初にプロジェクトをアンロードする必要はないと思います。

$dte.ExecuteCommand("Project.ReloadProject")

ソリューション エクスプローラーでプロジェクトをアンロード/再ロードする完全なコードを次に示します。

# Reload a project thru dte/SolutionExplorer Window 
# using Unload and Reload Context Menus.

$project = Get-Project
$shortpath = $dte.Solution.Properties.Item("Name").Value + "\" + $project.Name

#following GUID = Constants.vsWindowKindSolutionExplorer
#magic 1 = vsUISelectionType.vsUISelectionTypeSelect
$dte.Windows.Item("{3AE79031-E1BC-11D0-8F78-00A0C9110057}").Activate()
$dte.ActiveWindow.Object.GetItem($shortpath).Select(1)
$dte.ExecuteCommand("Project.UnloadProject")
$dte.ExecuteCommand("Project.ReloadProject")
4

2 に答える 2

0

同様の質問への回答はこちら: VS 2010 には、プロジェクト ファイルの変更後に開いているファイルを復元できる設定はありますか? ただし、最初に unload を呼び出さずに reload を呼び出すことができることを示しているわけではなく、dte.executecommand を使用せずに直接呼び出すためのメカニズムを提供していません。

于 2012-09-12T15:24:00.377 に答える