9

私は Visual Studio パッケージを開発しており、別のファイルに依存するソリューション エクスプローラーのファイルを作成するコードをいくつか書きました。

つまり、コード ビハインド ファイルやデザイナー ファイルと同じ関係があり、プラス/マイナス アイコンで親ファイルの下にネストされて表示されます。

+ MainForm.cs


- MainForm.cs
   MainForm.Designer.cs
   MainForm.resx

私が正常に記述したコードは、基になるプロジェクト ファイルを正しく変更しますが、プロジェクトを閉じて再度開くまで、変更はソリューション エクスプローラーに反映されません。

ソリューション エクスプローラーに変更がすぐに表示されるように、プロジェクトを更新または再読み込みするコードを探しています。

さらに詳しい情報...

依存ファイルを作成するメカニズムを示す sudo コードを次に示します。

IVsBuildPropertyStorage vsBuildPropertyStorage = GetBuildPropertyStorage();
vsBuildPropertyStorage.SetItemAttribute(projectItemIdentifier, "DependentUpon", parentFileName);

プロジェクトをリロードするためにこれを追加しようとしましたが、何の効果もありません。

project.Save();
VSProject obj = project.Object as VSProject;
obj.Refresh();
4

2 に答える 2

10

私の知る限り、これを行う唯一の方法は、ソリューション エクスプローラー ツール ウィンドウの自動化によるものです。

EnvDTE.DTE dte = ...;

string solutionName = Path.GetFileNameWithoutExtension(dte.Solution.FullName);
string projectName = project.Name;

dte.Windows.Item(EnvDTE.Constants.vsWindowKindSolutionExplorer).Activate();
((DTE2)dte).ToolWindows.SolutionExplorer.GetItem(solutionName + @"\" + projectName).Select(vsUISelectionType.vsUISelectionTypeSelect);

dte.ExecuteCommand("Project.UnloadProject");
dte.ExecuteCommand("Project.ReloadProject");

プロジェクトが保存されていない場合、"Project.UnloadProject" 呼び出しの前にダイアログ ボックスが表示されることに注意してください。

于 2012-09-08T05:32:32.100 に答える