シナリオは次のとおりです。asp.net mvc 4 プロジェクトに複数の開発者がいます。各開発者はローカル データベースを持っています。ソース管理システムはhttp://tfs.visualstudio.comの TFSです。Azure Web サイトを使用してサイトをホストしています。また、継続的な展開のために Azure Web サイトを構成しました。
ソース管理システムは、git、mercurial、TFS などです。正直なところ、それは問題ではないと思います。
私の質問は、次の 3 つのことをどのように達成するかです。
- 各開発者は、独自の接続文字列をローカルに持っています (ソース管理に含まれていません)。
- Azure には独自の接続文字列があります (ソース管理されていない場合)
- ソース管理に接続情報が表示されない
- 各開発者が F5 キーを押して、アプリをローカルで実行/デバッグ/テストする機能。
個々の接続文字列を machine.config に追加して、開発者ワークステーションのセットアップ間で競合が発生しないようにすることで、#1 を達成しました。
最初に、web.config から connectionstrings セクションを削除しました。Azure Web サイト (管理ポータルを使用し、[構成] の下) で接続文字列を構成し、Scott Hanselman のビデオを見た後、展開時にこれらが動的に web.config にマージされるという印象を受けましたが、そうではありません。起こるようです。データベースにアクセスするページに移動するたびに、接続文字列が見つからないというエラー (または接続に関連するその他のデータベース エラー) が表示されます。
Azure 接続文字列を web.config に直接配置すると、Things は Azure 上で動作しますが、接続の詳細はソース管理で誰にでも表示されます。
Scott と David Ebbo からの投稿をいくつか読んだ後、web.config に空白の接続文字列を (正しい名前で) 配置すると、Azure によって値が正しく上書きされるようです。次に、開発者に接続文字列を web.debug.config に入力してもらい、Slow Cheetah プラグインをインストールして、F5 キーを押してローカルでテストできるようにする必要があります。また、web.debug.config をソース管理にチェックインする必要もありません。(TFS ではそれほど簡単ではありません) これは非常に面倒な作業のように思えます。
これはそれほど珍しい問題ではないと信じなければなりません。他のチームはこれをどのように達成していますか?