このチュートリアルでは、メモ帳を起動するメニュー コマンドを使用して拡張機能を作成する方法について説明します。
メニュー コマンドを作成する
FirstMenuCommand という名前の VSIX プロジェクトを作成します。 VSIX プロジェクト テンプレートは、[ 新しいプロジェクト ] ダイアログで "vsix" を検索することで確認できます。
プロジェクトが開いたら、 FirstCommand という名前のカスタム コマンド項目テンプレートを追加します。 ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[追加>新しい項目] を選択します。 [ 新しい項目の追加] ダイアログで、[ C# アイテム>Extensibility ] に移動し、[コマンド] を選択 します。 ウィンドウの下部にある [名前 ] フィールドで、コマンド ファイル名を FirstCommand.csに変更します。
プロジェクトをビルドし、デバッグを開始します。
Visual Studio の実験用インスタンスが表示されます。 実験用インスタンスの詳細については、「 実験用インスタンス」を参照してください。
実験用インスタンスで、[ 拡張機能>管理拡張機能 ] ウィンドウを開きます。 FirstMenuCommand 拡張機能がここに表示されます。 (Visual Studio の作業インスタンスで [拡張機能の管理 ] を開くと、 FirstMenuCommand は表示されません)。
次に、実験用インスタンスの [ツール ] メニューに移動します。 FirstCommand コマンドの呼び出しが表示されます。 この時点で、このコマンドによって、 FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback()というメッセージ ボックスが表示されます。 次のセクションでは、このコマンドからメモ帳を実際に開始する方法について説明します。
メニュー コマンド ハンドラーを変更する
次に、コマンド ハンドラーを更新してメモ帳を起動してみましょう。
デバッグを停止し、Visual Studio の作業インスタンスに戻ります。 FirstCommand.cs ファイルを開き、次の using ステートメントを追加します。
using System.Diagnostics;プライベート FirstCommand コンストラクターを見つけます。 ここで、コマンドはコマンド サービスにフックされ、コマンド ハンドラーが指定されます。 次のように、コマンド ハンドラーの名前を StartNotepad に変更します。
private FirstCommand(AsyncPackage package, OleMenuCommandService commandService) { this.package = package ?? throw new ArgumentNullException(nameof(package)); commandService = commandService ?? throw new ArgumentNullException(nameof(commandService)); CommandID menuCommandID = new CommandID(CommandSet, CommandId); // Change to StartNotepad handler. MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID); commandService.AddCommand(menuItem); }Executeメソッドを削除し、StartNotepadメソッドを追加します。このメソッドはメモ帳を起動するだけです。private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }ここで試してみてください。プロジェクトのデバッグを開始し、[ ツール>Invoke FirstCommand] をクリックすると、メモ帳のインスタンスが表示されます。
Process クラスのインスタンスを使用して、メモ帳だけでなく任意の実行可能ファイルを実行できます。 たとえば、
calc.exeで試してみてください。
実験環境をクリーンアップする
複数の拡張機能を開発している場合や、異なるバージョンの拡張機能コードを使用して結果を調査している場合、実験環境が動作しなくなる可能性があります。 この場合は、リセット スクリプトを実行する必要があります。 これは Visual Studio Experimental Instance のリセットと呼ばれ、Visual Studio SDK の一部として出荷されます。 このスクリプトは、実験環境から拡張機能へのすべての参照を削除するため、最初から始めることができます。
このスクリプトには、次の 2 つの方法のいずれかでアクセスできます。
デスクトップから、 Visual Studio の実験用インスタンスのリセットを見つけます。
コマンド ラインから、 CreateExpInstance.exe コマンドを実行します。 これは、 VSSDK\Common\Tools\Bin の下の Visual Studio インストール フォルダーにあります。 完全なパスを構築し、完全なパスを引用符で囲んで呼び出すことができます。 たとえば、Visual Studio が C:\Program Files\Microsoft Visual Studio\2022\Community にインストールされている場合、コマンドは次のようになります。
"C:\Program Files\Microsoft Visual Studio\2022\Community\CreateExpInstance.exe" /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
デスクトップから、 Visual Studio の実験用インスタンスのリセットを見つけます。
コマンド ラインから、 CreateExpInstance.exe コマンドを実行します。 これは、 VSSDK\Common\Tools\Bin の下の Visual Studio インストール フォルダーにあります。 完全なパスを構築し、完全なパスを引用符で囲んで呼び出すことができます。 たとえば、Visual Studio が C:\Program Files\Microsoft Visual Studio\18\Community にインストールされている場合、コマンドは次のようになります。
"C:\Program Files\Microsoft Visual Studio\18\Community\CreateExpInstance.exe" /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
拡張機能をデプロイする
これで、ツール拡張機能を目的の方法で実行できるようになったので、友人や同僚と共有することを検討します。 Visual Studio 2015 がインストールされている限り、これは簡単です。 作成した .vsix ファイルを送信する必要があります。 (必ずリリース モードでビルドしてください)。
この拡張子の .vsix ファイルは 、FirstMenuCommand bin ディレクトリにあります。 具体的には、リリース構成をビルドしたと仮定すると、次のようになります。
<コードディレクトリ>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix
拡張機能をインストールするには、フレンドが Visual Studio のすべての開いているインスタンスを閉じ、 .vsix ファイルをダブルクリックして VSIX インストーラーを起動する必要があります。 ファイルは 、%LocalAppData%\Microsoft\VisualStudio<version>\Extensions ディレクトリにコピーされます。
フレンドが Visual Studio を再び起動すると、 ツール>Extensions と更新プログラムで FirstMenuCommand 拡張機能が見つかります。 拡張機能と更新プログラムに移動して、拡張機能をアンインストールまたは無効にすることもできます。
次のステップ
このチュートリアルでは、Visual Studio 拡張機能でできることのごく一部のみを示しました。 Visual Studio 拡張機能で実行できるその他の (合理的に簡単な) 操作の簡単な一覧を次に示します。
単純なメニュー コマンドを使用すると、さらに多くのことを行うことができます。
独自のアイコンを追加する: メニュー コマンドにアイコンを追加する
メニュー コマンドのテキストを変更する: メニュー コマンドのテキストを変更する
コマンドにメニュー ショートカットを追加する: キーボード ショートカットをメニュー項目にバインドする
さまざまな種類のコマンド、メニュー、ツール バーを追加する: メニューとコマンドを拡張する
ツール ウィンドウを追加し、組み込みの Visual Studio ツール ウィンドウを拡張する: ツール ウィンドウの拡張とカスタマイズ
IntelliSense、コード候補、その他の機能を既存のコード エディターに追加する: エディターと言語サービスを拡張する
[オプションとプロパティ] ページとユーザー設定を拡張機能に追加する: プロパティと [プロパティ] ウィンドウを拡張し、ユーザー設定とオプションを拡張する
他の種類の拡張機能では、新しい種類のプロジェクトの作成 (プロジェクトの拡張)、新しい種類のエディターの作成 (カスタム エディターとデザイナーの作成) など、もう少し作業が必要になります。