NuGetパッケージを作成する。Visual Studioで。

#はじめに
自分で作った便利なライブラリをみんなにも使ってほしい、と思ったらNuGetパッケージとしてギャラリーに公開できるのでやってみましょう。
作り方は簡単、Visual Studioからです。
Visual Studioが便利すぎて、Visual Studioがなくなったら何もできないレベルになってしまいそうで怖いです。
今回の内容は公式の[こちら](https://docs.microsoft.com/ja-jp/nuget/quickstart/create-and-publish-a-package-using-visual-studio)を御覧ください。
特に新しい内容ではなく、私の備忘録です。

#クラスライブラリを作成
まずは何は無くともVisual Studioから`クラスライブラリ(.NET CoreでもStandardでも何でも)`のプロジェクトを作成します。
テストであれば、適当にパブリックなクラスとメソッドでも作ってビルドが通るようにします。

#パッケージの情報の設定
`プロジェクト`→`<プロジェクト名>のプロパティ`を選択します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/a7ed218d-e944-79fa-8be2-dad61b41841e.png" title="" alt="image.png" width="60%" height="" >

プロジェクトのプロパティが開くので、左側のタブから「パッケージ」タブを選択します。
そして、各項目を適宜入力します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/3bcc42e6-eeaa-5179-ca96-52bc21597772.png" title="" alt="image.png" width="60%" height="" >

`ソリューションの構成`を`Release`にしてから、`ソリューションエクスプローラー`からプロジェクトを右クリックして`パック`を選択します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/a5ae8f3d-aec2-9e26-c9b1-fa7f30e9dbf4.png" title="" alt="image.png" width="60%" height="" >

これで`プロジェクトフォルダ\bin\Release`に`.nupkg`ファイルが生成されます。

#NuGetギャラリーへの公開
##nuget.orgのアカウント作成
[nuget.org](https://www.nuget.org/)へ移動し、アカウントを作成するかサインインしてください。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/996e133b-7120-f764-5c8b-9cd268b52e04.png" title="" alt="adfasdfa.png" width="60%" height="" >


次に右上のメニューから`API Keys`を選択します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/2ff16f86-6b06-2fcf-4e5a-e1a3dc3cba93.png" title="" alt="slakdfjasdlkfj.png" width="60%" height="" >

`Create`の項目をクリックし、公式ページの説明に従ってキー名などを入力して、「Create」ボタンを押します。
![flaskdfjalsdf.png](https://qiita-image-store.s3.amazonaws.com/0/245438/fc52e0ce-517a-7f15-8d13-a2705ee3008b.png)

すると以下のように表示されるので、保管しておいてください。

<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/fc52e0ce-517a-7f15-8d13-a2705ee3008b.png" title="" alt="flaskdfjalsdf.png" width="60%" height="" >

ではコマンドプロンプト（など）を開き、`.nupkg`ファイルが出力された`bin\Release`フォルダへ移動します。

そして、公式の説明のとおり以下のコマンドを入力します。

```
nuget push .nupkgファイル APIキー -Source https://api.nuget.org/v3/index.json
```

実行するとこんな感じです。

```
\bin\Release> nuget push .\AlexaPersistentAttributesManager.1.0.0.nupkg APIキー -Source https://api.nuget.org/v3/index.json
Pushing AlexaPersistentAttributesManager.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
  Created https://www.nuget.org/api/v2/package/ 1636ms
Your package was pushed.
```

#確認
nuget.orgへ移動し、右上のメニューから`Manage Packages`を選択します。
すると、以下のように先程アップロードしたパッケージが表示されると思います。

<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/aa526f91-7d5c-ad7d-5305-7fa67b3dffe6.png" title="" alt="adfasdfasdfasd.png" width="60%" height="" >

また、しばらくしてからnuget.orgでパッケージを検索すると検索結果に出てきます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/8b2e22e6-afdf-8449-a0ab-d7247de027b7.png" title="" alt="image.png" width="60%" height="" >


もちろん、Visual StudioのNuGetパッケージマネージャーでも検索結果に出てきます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/15c9e19f-58d1-1c0c-6aaa-604df29c8ae8.png" title="" alt="image.png" width="60%" height="" >

#おわりに
Visual Studioではサーバーサイドからモバイルアプリまで様々なアプリケーションの開発だけでなく、NuGetパッケージの作成も簡単にできてしまうことがわかりました。
Visual Studio廃人になってしまいそうです。
こんなに簡単にパッケージを公開できるので、（自分が）便利（と思う）なライブラリを作ったらどんどん公開するといいとお思います。

ちなみに、今回公開したパッケージは「C#でAlexaスキルを作成する際に、DynamoDBへのデータの格納をちょっぴり楽にする」というニッチなものになっています。

そう、C#でAlexaスキルも作れるんです。すごいですね！