私たちは、このページの既存の回答のいくつかを組み合わせたシステムを使用しており、さらにScott Hanselmanによるこの提案を利用しています。
つまり、ここで行った他の回答で示唆されているように、共通のapp.config / web.configを設定し、特定の設定のほとんどを個々のファイルに含めることでした。たとえば、SMTP設定の場合、app.configには
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
このファイルはソース管理下にあります。ただし、次のような個別のファイルはそうではありません。
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
話はこれで終わりではありません。新しい開発者、またはフレッシュソースインストールについてはどうですか?構成の大部分はソース管理ではなくなったため、必要なすべての.configファイルを手動で作成するのは面倒です。私は少なくとも箱から出してすぐにコンパイルできるソースがあることを好みます。
したがって、.config.defaultファイルという名前のバージョンの.configファイルをソース管理に保持します。したがって、新しいソースツリーは次のようになります。
それでも、Visual Studioにとっては意味のないテキストファイルであるため、実際には開発者にとっては何の用途もありません。したがって、バッチファイルはcopy_default_config.bat
、.config.defaultファイルから.configファイルの初期セットを作成します。
@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.
スクリプトは安全に再実行可能であり、すでに.configファイルを持っている開発者はそれらを上書きしません。したがって、このバッチファイルをビルド前のイベントとして実行することができます。.defaultファイル内の値は、新規インストールでは正確ではない可能性がありますが、妥当な出発点です。
最終的には、各開発者は最終的には次のような設定ファイルのフォルダーになります。
少し入り組んでいるように見えるかもしれませんが、開発者が互いにつま先を踏む煩わしさよりも間違いなく望ましいです。