12

この質問は2対1のようなものですが、どちらも同じ問題に関連しています。

私たちは10人の開発者のチームであり、IISの完全なインスタンスを使用することを好む開発者もいれば、IIS-Expressを使用することを好む開発者もいます。どちらかを使用することにはメリットがあります。たとえば、IISは本番環境に最もよく似ていますが、IIS-Expressでは編集と続行のデバッグが可能です。

10人の開発者作業チームに加えて、ソース管理を使用しており、分岐構造があります。各ブランチには、データベース接続文字列など、異なるweb.config/app.config設定がある場合があります。開発者は一度に複数のブランチで作業する可能性があるため、通常はブランチごとに1つのデータベースがあり、ローカルデータベースを持つ開発者を調べていますが、アプローチに関係なく、名前の衝突は依然として問題です(つまり、開発者は2つある可能性があります)ローカルデータベース、ブランチごとに1つ)。

最初の問題は、csprojファイル、特にWebサーバー設定に関する問題です。1人の開発者がIIS-Expressを使用するcsprojファイルをチェックインし、もう1人の開発者が最新の取得を実行すると、構成が上書きされ、時間が無駄になり、フラストレーションが生じます。

もちろん、最も簡単な解決策は、すべての人に1つのツール、1つの構成を使用するように強制することですが、特に結果の出力(コンパイルされたコード)に関係のないものについては、そうはしません。

2番目の問題は、構成ファイルに関するものです。構成ファイルは(他のファイルと同じように)ソース管理に保存されるため、分岐マージを行う場合、これらのファイルは後で手動で更新する必要があります。構成ファイルにはデバッグ変換とリリース変換があり、両方に異なる接続文字列を含めることができますが、これでは、同じブランチで異なる接続文字列を使用している2人の個々の開発者の問題は解決されません。

これに対する明らかな解決策は、誰もが常にまったく同じ設定を持っていることですが、一部の開発者はLocalDBインスタンスを使用したい場合もあれば、SQL-Expressを使用したい場合もありますが、ステージングサーバーはフルオンのSQLServerインスタンスを使用します。繰り返しますが、これは最終的な結果をもたらさない別の設定です。

チームメンバー間、および分岐/マージ間の構成の管理に関して、特定の問題に対する解決策を見たことがありません。

4

3 に答える 3

6

特にWebサーバーの場合、VSには[すべてのユーザーにサーバー設定を適用する(プロジェクトファイルに保存する)]チェックボックスがあります。チェックを外すと、設定はローカルの.csproj.userファイルに保存されるため、全員が独自の設定を行うことができます。 。

接続文字列の場合、開発者が接続文字列を入れることができる(ソース管理ではない)各マシンに「user.config」ファイルを置くことができます。メインの構成ファイルは、このファイルをロードして接続文字列を取得できます。これを行うにはいくつかの方法がありますが、私はこれを試しました:

App.config or Web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings configSource="user.config"></connectionStrings>
</configuration>

user.config:
<connectionStrings>
  <add name="test" connectionString="Server=.;Database=...;"/>
</connectionStrings>

Windowsアプリの場合は、user.configファイルの[出力ディレクトリにコピー]プロパティを設定して、VisualStudioがそれをbinディレクトリにコピーするようにします。

于 2013-03-26T20:19:42.670 に答える
2

私があなたの質問を正しく理解しているなら、あなたは基本的にあなたのapp.config / web.config /他の特定のファイルをチェックインから除外したいですか?何らかの理由で、これはやや隠されたオプションのようです...

Fileソリューションエクスプローラーで.configファイルを選択し、(Visual Studio) -> Source Control->をクリックすることで、同様の問題に対する答えを最終的に見つけましたExclude selection from Source Control

これにより、選択したファイルがチェックインされたり、他の開発者のファイルが上書きされたりするのを防ぐことができます。

(注:これはVS2010で機能します。このオプションが、2012年に存在することを保証することはできません)

于 2013-03-26T20:19:18.010 に答える
0

3つの環境の3つのブランチに3つのデータベースがある場合にも同様の問題が発生しました。

本番サーバー==>本番DB==>本番ブランチ==>本番接続文字列テストサーバー==>マスターDB==>マスターブランチ==>マスター接続文字列ローカル開発==>ローカルDB==>開発者ブランチ== >開発者接続文字列..。

.gitフォルダー内には、ブランチをチェックアウトするたびに実行するスクリプトを配置できるgitフックがあります。チェックアウトするたびに自動的に実行され、接続文字列を更新するチェックアウト後のスクリプトがあります。これにより、web.configファイルを手動で変更する必要がなくなります。

!/ bin / bash

。config eval $(git branch | grep " " | sed "s / //")

sed -es / {SERVER} / $ server / g -es / {DATABASE} / $ database / g -es / {USER} / $ user / g -es / {PASS} / $ pass / g -es / {SITE_TYPE } / $ site_type / g \

于 2014-02-14T15:10:13.553 に答える