3

ここ数時間、増大する問題に対する最善の解決策を探していました。

  • (VS 2010 では) Web サイトがますます増えているため、管理する web.config ファイルもますます増えています。開発環境と本番環境の間にはかなりの違いがあります (接続文字列、トレース/メール設定など)。
  • また、誰かが働いているチーム (例: Web デザイン チーム) によっては、一部のパスワードと暗号化キー (web.config ファイルにある) にアクセスできない場合があります。

現在、次のものがあります。

  • prod 値 (接続文字列、パスワード) を含むweb.configファイル。
  • dev 値を含むweb.config.devファイル。
  • Web デザイナーが作業を行うために最低限必要な値を含むweb.config.restrictedファイル。

したがって:

  • 開発者が web.config ファイルに新しい行を追加するたびに、その行を web.config.dev ファイル (最終的には web.config.restricted ファイル) にも挿入する必要があります。
  • チェックイン後:
    • 開発チームのすべてのメンバーは、 web.config.devファイルからすべてのコンテンツをコピーし、web.config ファイルをオーバーライドする必要があります。
    • Web デザインチームのすべてのメンバーは、web.config.restricted ファイルからすべてのコンテンツをコピーし、web.config ファイルをオーバーライドする必要があります。
  • これらの手動操作は、多くのエラーを引き起こします (変更をすべてのファイルに反映するのを忘れている人がいます)。
  • TFS は、web.config ファイルへのアクセス権を Web 設計チームに付与しないように構成する必要があります (ファイルを手動で作成する必要があります)。

私はハックの少ない方法を見ています:

  • すべての web.config ファイルの内容を複製することなく、複数の環境 (dev/prod) を管理します。
  • 特定のチームに対して機密性の高い値を非表示にするために、TFS 権限を管理します。

ご了承ください:

  • Web アプリケーションではなく Web サイト プロジェクトを使用しているため、web.config 変換を使用できません。
  • Web Deployment Projects は VS 2012 ではもう利用できないようですので、今すぐ使い始めるのは避けたいと思います。
  • プロファイルの公開は良い解決策かもしれませんが、まだ VS 2010 を使用しています。

この問題を抱えたのは私が初めてではないと確信しています。人々がそれをどのように処理したか知りたいです:)

4

1 に答える 1

3

マシンにインストールされている.NETFrameworkのバージョンごとに、マシンレベルweb.configmachine.configファイルを取得します。使用する予定のフレームワークバージョンごとに、接続文字列など、環境固有のすべての値をこれらのファイルに入れることができます。

たとえば、開発マシンで、接続文字列またはappSettings値をC:\Windows\Microsoft.NET\Framework64\v4.0.3031\CONFIG\machine.config(または正確なバージョン)に配置し、本番環境のさまざまな値に対して同じことを行います。構成ファイルは継承するため、コードで別のことをする必要はありません。

ただし、これには、各開発者が適切なマシンレベルの構成ファイルをセットアップする必要があります。これはおそらく、開発環境、または開発者のマシン上のローカルパスを指している可能性があります。

于 2013-01-10T04:25:36.017 に答える