LoginSignup
2
3

C# コンソールアプリでユーザーシークレットを使用する RTA

Last updated at Posted at 2024-05-08

やりたいこと

  • コンソールアプリでも接続文字列などをリポジトリに混入させない
    • Visual Studio のユーザーシークレットを使う

環境

  • Visual Studio Community 2022 Version 17.9.6
  • .NET 8

手順

コンソールアプリを追加

いつも通りです。

ユーザーシークレットを有効化

  1. プロジェクトを右クリック → ユーザー シークレットの管理
    image.png
  2. パッケージを追加(はい)
    image.png
  3. secrets.json が追加されます
    image.png
  4. 適当に設定
secrets.json
{
  "Secrets": {
    "Message": "This is a secret message."
  }
}

Program.cs で読み込む

IConfiguration を Build()

Program.cs
-// See https://aka.ms/new-console-template for more information
+using Microsoft.Extensions.Configuration;

Console.WriteLine("Hello, World!");

+IConfiguration configuration = new ConfigurationBuilder().AddUserSecrets<Program>().Build();

先ほど作ったユーザーシークレットを読み込む

Program.cs
using Microsoft.Extensions.Configuration;

Console.WriteLine("Hello, World!");

IConfiguration configuration = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
+string message = configuration.GetSection("Secrets:Message").Value ?? "Failed";
+Console.WriteLine(message);
+
+Console.ReadLine();

セクションの指定は JSON のキーをコロンでつなげた文字列で行います。

動作確認

image.png

読み込むことができました!

README に書いておく

新たにプルした人がビルドできなくなってしまうので、README にでも書いておいてあげましょう。

README.md
# HigeDaruma.DemoConsoleSecret

## 準備

secrets.json に以下を設定してください。

```json
{
  "Secrets": {
    "Message": "{適切に設定してください}"
  }
}
```

まとめ

ユーザーシークレットをコンソールアプリで読み出すことができました。secrets.json に書いたシークレットはロカールのみに残り、リポジトリにはプッシュされません。安心して秘密を書き込みましょう。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3