emu雑記

C#erな人が書いているブログです。最近、javaを始めました。なんかいろいろやってます。

Visual Studio 拡張機能 メニューコマンド編 その4

これまで、ざっくりとvsctファイルの設定方法を説明してきました。
いよいよ、C#の実装に移っていきたいと思います。

といっても、まだ設定回りですが。

vsctファイルで解説してきましたが、拡張機能本体やコマンドとVisual Studioは、すべてGuid値とIdで管理されています。

このGuid値とIdはC#ソースでも使用されています。

確認していきましょう。

パッケージGuid

拡張機能のプロジェクトの中にGuids.csというクラスファイルが生成されています。
テンプレート生成された初期状態では、パッケージを表すGuidとコマンドを表すGuidが、宣言されています。

public const string guidVSPackage1PkgString = "993d068e-e2f2-438e-85bd-30605939cca7";
public const string guidVSPackage1CmdSetString = "2cc77bb9-aada-4aea-be61-0e9428920d8e";

これら二つをvsctファイルと同じ値で設定することで、プログラムと定義を紐づけています。

パッケージを表すGuidの値はvsctの下に記載されています。

<!--
パッケージのGuidです。
このGuidはパッケージクラスで指定したGuidと同一である必要があります。
一つの場所で管理しやすいようにGuids.csに記載します。
-->
<GuidSymbol name="guidVSPackage1Pkg" value="{993d068e-e2f2-438e-85bd-30605939cca7}" />
<!--
メニュー・コマンドを一まとめにするために使用されたGuidです。
このGuidは、コマンドの定義をパッケージクラスで使用したものと同一である必要があります。
一つの場所で管理しやすいようにGuids.csに記載します。
-->
<GuidSymbol name="guidVSPackage1CmdSet" value="{2cc77bb9-aada-4aea-be61-0e9428920d8e}">

また、拡張機能の情報を設定するmanifestファイルにも使用されています。
f:id:emu717171:20131127230358j:plain

コマンドID

コマンドIdですが、これもPkgCmdID.csというクラスファイルが生成されています。

static class PkgCmdIDList
{
    public const uint cmdidMyCommand =        0x100;
};
<!--
メニュー・コマンドを一まとめにするために使用されたGuidです。
このGuidは、コマンドの定義をパッケージクラスで使用したものと同一である必要があります。
一つの場所で管理しやすいようにGuids.csに記載します。
-->
<GuidSymbol name="guidVSPackage1CmdSet" value="{2cc77bb9-aada-4aea-be61-0e9428920d8e}">
  <IDSymbol name="MyMenuGroup" value="0x1020" />
  <IDSymbol name="cmdidMyCommand" value="0x0100" />
</GuidSymbol>

次回は、作成されたPackageクラスを確認していきます。