0

Solution.Openを使用してアドイン/拡張機能 (私の場合は VS2012) でソリューションをプログラムで開くと、ソリューション ファイルはプロジェクトの MRU (つまり、[ファイル]->[最近のプロジェクトとソリューション] メニュー) に追加されません。 File->Open->Project/Solution メニューを使用してソリューションを開きました。ファイルを強制的に追加する方法はありますか? レジストリの操作に関するいくつかの参照を見てきました (例: HKCU\Software\Microsoft\VisualStudio\11.0\ProjectMRUList)しかし、VSが使用するストレージを想定しないため、将来的に壊れる可能性が低くなる別の方法はありますか? おそらく、情報がどこに保存されているかに関係なく、それを処理する VS インターフェイスです。これにより、 mruアイテムの最大数を無視して、既存のアイテムの更新/再番号付けのエラーを回避することもできます使用しています。私が見たところ、このインターフェイスは組み込みの検索機能に関連しているように見えます。

[編集] OK、さらに掘り下げました。まず、IVsMRUItemsStoreらしい最近のプロジェクト メニューを表示した後でも Microsoft.VisualStudio.PlatformUI.MRUItemsStoreService が空であるように見えるため、プロジェクト mru リストとは無関係です。次に、レジストリを直接操作しようとしましたが、VS がレジストリの変更を認識せず、メニューとその内部キャッシュが変更されないため、うまくいきません。その後、[プロジェクトを開く] ダイアログを使用して別のプロジェクトまたはソリューションを開くと、レジストリは、キャッシュされた情報とダイアログを介して開かれたプロジェクト/ソリューションで上書きされます。VSにレジストリ情報を再読み取りするように通知する方法があれば(VSを閉じずに)、レジストリを操作しても問題ありません。また、VS のオブジェクト モデルを介して最近のプロジェクト リストをプログラムで操作する方法が他にあれば幸いです。

[編集 2 ] TFS のソース管理エクスプローラーの [表示] メニュー項目が、私が望んでいることを正確に実行することがわかりました。指定されたソリューションを開き、(開いているドキュメントを閉じずに) ソリューションを変換する必要があるかどうかを確認し、アイテムを MRU に追加します。問題は、拡張機能/アドインで同じことを行うにはどうすればよいかということです。開いているソリューション/プロジェクトが TFS にないため、(パラメーターを使用しない限り) コマンドを使用できません。

4

1 に答える 1

3

TFS ソース管理エクスプローラーは単にIVsSolution.OpenSolutionFileを呼び出すだけで、ソリューションが最近のファイル リストに追加されます。EnvDTE メソッドの代わりにそれを使用するだけでよいのではないかと思います。

于 2013-05-16T03:51:08.963 に答える