10

web.config (デバッグ用 - web.Debug.config) にハードコードされた接続文字列を持つ WebForms プロジェクトがあります。この接続文字列は、開発用の DB サーバーを指しています。

そのデータベースのローカル コピーを実行して、自分の変更がすぐに他のユーザーに影響を与えないようにしたいと考えています。

私が行ってきたことは、web.config に入り、ローカル DB を指すように接続文字列を更新することです。これは機能しますが、web.config を除外することを覚えておく必要があり、すべての変更を元に戻す場合は再更新する必要があるため、やや面倒です。

私が言ったように、他の人がこのソリューションを使用しているので、何かをチェックインしたり、Web 構成を変更したりすることは避けたいと思います。

ソース管理に何もチェックインせずに、web.config 接続文字列をオーバーライドして、サイトがローカル DB を指すようにする方法はありますか?

4

3 に答える 3

12

1 つの解決策は、構成変換機能を使用することです。

VS 2012:

  1. ビルド - >構成マネージャーに移動します
  2. [アクティブ ソリューション構成リスト] ボックスをクリックし、[新規] を選択します。
  3. 新しい構成の名前として local と入力し、[保存] をクリックします。
  4. [構成] 列の値を [デバッグ] または以前のデフォルト値に戻してください。
  5. Web.config ファイルを右クリックし、[構成変換の追加] を選択します。これにより、新しく作成された web.local.config が追加されます。
  6. web.local.config 内に、次のようなローカル接続文字列変換を追加します。

    <connectionStrings>
        <add name="DbConnection"
            connectionString="...Add Local Connection String..."
            xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    

プロジェクトを実行またはデバッグするときは、緑色の実行矢印の横にあるリスト ボックスからローカル構成を選択してください。web.local.configにチェックインしないだけです

于 2013-08-20T20:54:27.400 に答える
10

できることの 1 つは、接続文字列用に別のファイルを用意することです。これをソース管理にまったくチェックインしないでください。

構成方法によっては、開発を行っているすべての人が同じことを行う必要がある場合があり、パブリッシュ/デプロイの方法によっては、これがうまくいかない場合があります。

例えば:

Web.config

<configuration>
  <connectionStrings configSource="connectionstrings.config">
  </connectionStrings>
</configuration>

connectionstrings.config (ソース管理外)

<connectionStrings>
  <add name="cs" connectionString="server=.;database=whatever;"/>
</connectionStrings>

各開発者は、ローカル マシンが指すデータベースを選択できます。また、connectionstrings.config ファイルがソース管理されていない (無視リストに追加されている) 限り、誰もお互いの足を踏み入れることはありません。

于 2013-08-20T20:43:29.853 に答える
4

ローカル マシンに SQL エイリアスを作成します。

[実行の開始] をクリックし、ローカル マシンで「cliconfg.exe」と入力します。これは、ローカル マシンに SQL エイリアスを作成するのに役立ちます。web.config ではライブ データベースに接続しますが、マシンではローカル データベースにリダイレクトする SQL エイリアスを作成します。これが完了すると、プログラムを公開すると自動的にライブ データベースに接続されますが、ローカル マシンから実行すると、コードを変更しなくてもローカル データベースに接続されます。

于 2013-08-20T20:32:06.597 に答える