Visual Studio 2022 拡張機能の提出方法

# 最初に宣伝

https://marketplace.visualstudio.com/items?itemName=dhq-boiler.BE001

この記事は上記の拙作拡張機能を作って Visual Studio Marketplace に提出した時のことを書いています。

途中つまづいたことなどを中心に記します。

## VSIXパッケージ生成時に注意すべきこと

本項ではVSIXパッケージをビルドで生成するまでの手順で注意すべき事柄を説明します。

### リソースファイルの同梱のやり方

ここでいうリソースファイルというのは、VSIXパッケージに同梱するアイコンファイルやLICENSEファイルのことです。

vsixmanifestファイルに記入したリソースファイルはもれなくVSIXパッケージに同梱しなければなりません。

同梱するには次の手順が必要です。

1. ソリューションエクスプローラーで該当のエントリを右クリック→プロパティでプロパティウィンドウを開く
2. ビルドアクションを「コンテンツ」にする
3. 「Include in VSIX」を「True」にする（Trueに変更するには、ビルドアクションをコンテンツにする必要があります）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/51dae1a4-967c-4100-2102-b2d972997abb.png)


以上を同梱すべきエントリすべてに対して行ったあとビルドしましょう。

## Visual Studio Marketplaceに提出してみよう！

まずは Visual Studio Marketplace にアクセスしてみましょう。

https://marketplace.visualstudio.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/dbe33d99-5689-4087-faef-15d9f496342d.png)

拡張機能を提出するには、右上の「Sign in」からサインインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/c325d8e8-e287-a359-36ab-4408b3a67b97.png)

素直に自分のMicrosoftアカウントを選択します。ここに自分のMicrosoftアカウントが表示されていなければ、「別のアカウントを使用する」から指示に従います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/1358e439-79c7-8269-05d7-77e18eec5ae6.png)

先程のホームページに戻ってきて、グローバルメニューの「Sign out」の左に自分のアカウントが表示されていることを確認します。

拡張機能を提出するには、「Publish extensions」のリンクをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/c13c3204-6f90-dff2-2cff-f5460795c5e8.png)

※既にパブリッシャーと１つの拡張機能が追加されていますが気にしないでください。追加されていない体で説明します。

左のメニューから「Create publisher」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/61fe66a3-ec1b-1e32-447a-3dd16b1c3033.png)

最低限、以下を入力します。

* Basic information
    * Name 自分の名前（本名でなくてもよい）
    * ID　ユニークな発行者の識別子

あとは記入したい項目を記入したら、ページ下方のCreateボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/b9b17885-ff29-d7eb-108b-16118b8539c8.png)

Manage Publishers & Extensionsのページに戻ってきたら、拡張機能の発行者を左のメニューから選び、画面中央の「New extension」をクリック、拡張機能の種類を選択します。

ここでは Visual Studio の拡張機能を作成した体で説明するので、「Visual Studio」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/5fbd3ffd-5a11-d1bc-5912-5ec13625b9b1.png)

Upload extension のページでは、Upload extension と Provide a link がありますが、前者しか選べないようになっています。Upload extensionを選択して、Drag and DropのエリアにビルドしたvsixファイルをD&Dするか、このエリアをクリックしてファイル選択ダイアログでビルドしたvsixファイルを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/9e5a706b-2614-ba35-1466-42d103c500f3.png)

Basic informationの以下の項目は、vsixパッケージのsource.extension.vsixmanifestファイルに記載された値が自動入力され、変更できないようになります。

* Display name
    * source.extension.vsixmanifestファイルの&lt;DisplayName>要素
* Version
    * source.extension.vsixmanifestファイルの&lt;Identity>要素のVersion属性
* VSIX ID
    * source.extension.vsixmanifestファイルの&lt;Identity>要素のId属性
* Logo  
    * source.extension.vsixmanifestファイルの&lt;Icon>要素
* Short description
    * source.extension.vsixmanifestファイルの&lt;Description>要素
* Mark extension to be in Preview
    * source.extension.vsixmanifestファイルの&lt;Preview>要素

このページで入力すべきは、以下の項目になります。

* Internal name
    *  一度入力したら変更不可なユニークの名前。
* Overview
    * markdown形式で記載できる説明文
* Supported Visual Studio versions
    * Visual Studio 2022でいいと思います
* Supported Visual Studio editions
    * Visual Studio 2022 Communityでいいと思います。拡張機能を提供したいVisual Studioエディションを指定します。
* Type
* Categories
* Tags
* Pricing category
    * 拡張機能の価格設定。無償、有償、トライアルが選べる。
* Source code repository
    * プロプライエタリソフトウェアなら設定しなくてもよい。
* Allow Q&A for your extension
    * ユーザーにQ&Aを投稿を許すか

記入が終わったら、Save & Uploadボタンを押下します。

拡張機能のバリデーション（体感10分）が始まり、これが終わると、メールが送られてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4734/d8e6c284-ca7b-c272-b350-9f16da086285.png)

最後に、提出した拡張機能は Availabilityを Public にしないと公開されません。

忘れずに提出した拡張機能を右クリックして、「Make Public」を選択し、Availability を Public にしてください。

これで晴れて、全世界のVisual Studioユーザーに公開されます。

# おわりに

いかがでしたでしょうか。多くのQiitaユーザーがVisual Studio拡張機能の作り方についての記事を書かれていたので、私は拡張機能の提出の仕方について主眼を置いて説明してみました。

拡張機能を作る喜びを皆にも分かち合いたいです。