かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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 ならポータル側でアプリケーション設定できるので完璧ですね。