これは一般的なシナリオであり、さまざまな解決方法があります。1 つの方法は、config transformsを使用することです。や と同じようにWeb.Customer1.config
、 、 などを使用できます。顧客固有の変換ファイルでは、顧客がカスタマイズしたいのみを「オーバーライド」できます。Web.Customer2.config
Web.Debug.config
Web.Release.config
appSettings
さまざまな変換を作成するには、まずさまざまなプロジェクト プラットフォームを作成します。Visual Studio 構成マネージャーに移動し、Configuration
Web プロジェクト (またはカスタマイズされた構成設定が必要な任意のプロジェクト) の列で、ドロップダウンをクリックしてから をクリックします<New...>
。新しいプロジェクト構成Customer1
または任意の名前を付け、 のボックスをオンにして、そのドロップダウンからCopy settings from
選択Release
します。チェックボックスにもチェックをCreate new solution configurations
入れます。
最後に、web.config
ファイルを右クリックして をクリックしますAdd config transform
。これにより、テンプレートWeb.Customer1.config
ファイルが生成されます。config 変換属性appSettings
を使用して、必要に応じてオーバーライドするように編集します。次に、ソリューション ビルド構成xdt:
を使用してプロジェクトを発行できます。Customer1
ビルドの一環としてweb.config
が変換され、web.config
顧客ごとに異なるファイルが作成されます。これを使用して、さまざまな展開用にプロジェクトをカスタマイズすることもできます。つまり、db 接続文字列、smtp サーバー、文字通り XML 構成ファイル内のすべてを変更します。
最後の考えとして、各Web.Xyx.config
ファイルを右クリックし、プロパティを選択して、それを に設定しBuild Action
てNone
ください。
例:
ベース web.config
<appSettings>
<add key="CommonProperty1" value="[for all customers]" />
<add key="CommonProperty2" value="[for all customers]" />
<add key="CommonProperty3" value="[for all customers]" />
<add key="CustomProperty1" value="[for one customer]" />
<add key="CustomProperty2" value="[for one customer]" />
<add key="CustomProperty3" value="[for one customer]" />
<appSettings>
web.Customer1.config
<appSettings>
<add key="CustomProperty1" value="The Ohio State University" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="CustomProperty2" value="Scarlet" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="CustomProperty3" value="Gray" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<appSettings>
web.Customer2.config
<appSettings>
<add key="CustomProperty1" value="Michigan University" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="CustomProperty2" value="Blue" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="CustomProperty3" value="Maize" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<appSettings>