かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

App.config / Web.config に秘密の情報を入れたいときはどうする? その 1

入れないのがいいんですけどね。ローカルで実行するときに、開発用のキー情報を入れることもあるでしょう。 でもリポジトリには入れたくないという感じ。

App.config を分割する

App.config を作って、こっちには当たり障りない情報を書きます。そして、appSettings タグに file 属性があるのでこいつに Secret.config とかって書いておきます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="Secret.config">
    <add key="a" value="a"/>
  </appSettings>
</configuration>

そして Secret.config ファイルを作ってこんな感じにします。プロパティでビルドアクションはコンテンツで常にコピーするようにしておきましょう。

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <add key="b" value="b" />
</appSettings>

今回は b の値が秘密って感じですね。あとは Secret.config あたりを .gitignore あたりに追加して完成です。

このときに、ConfigurationManager.AppSettings["a"] も ConfigurationManager.AppSettings["b"] もマージされてるので、どっちの値も取れます。

めでたしめでたし。

まとめ

でもまぁ exe にまとめちゃったら何もしないとプレーンテキストだから残念な感じになりますね。 Azure WebJobs みたいにクラウドで動くプロセスでユーザーのもとに配られないものならありですかね。WebJobs ならポータル側でアプリケーション設定できるので完璧ですね。