VSIXのプロジェクトを作成し、Visual Studio自体を操作してみる。
環境
- Visual Studio 2022 Community
- .NET 6.0 WinForms
コード
EnvDTEを使ったらいろいろできそう。
初期化部
private DTE2 _dte; public static async Task InitializeAsync(AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(package.DisposalToken); OleMenuCommandService commandService = await package.GetServiceAsync(typeof(IMenuCommandService)) as OleMenuCommandService; Instance = new SampleCommand(package, commandService); Instance._dte = await Instance.ServiceProvider.GetServiceAsync(typeof(DTE)) as DTE2; }
アクセス部
private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); // デザイナファイルにアクセスするためのインターフェースを取得する var host = _dte.ActiveWindow.Object as IDesignerHost; // アクティブなドキュメントが属しているプロジェクトを取得する var proj = _dte.ActiveDocument.ProjectItem.ContainingProject; // ソリューションエクスプローラーをアクティブにする _dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate(); }
ドキュメントやWEB情報が充実しているわけではなさそうなのでこれからまたいろいろ調べていく。