2017-11-03 7 views
1

私の.Net Webアプリケーションの開発、リリース、およびプロダクションには3つの環境があり、それぞれに独自の設定ファイルとプロジェクト設定ファイルがあります。環境に基づく.Net Webアプリケーション

異なる環境用の設定ファイルと設定ファイルが1つのシステム内にあると仮定して、小さなスクリプトやアプリケーションを作成して、開発者が環境タイプと関連する設定と設定ファイルをロードしてからアプリケーションビルド。

誰もが私にこれを案内できますか?

+0

これらの質問を最初に聞いてください。 ** A:**この1つのプロジェクト(Java - .Net - iOs Android - 多く:複数の言語/ OSの使用)以外の他のプロジェクトのための私の開発技術は何ですか? ** B:**今後数年間(5または500)にいくつのエンドステートバイナリまたはプロジェクトが生成されるかを予測します。 ** C:** AWSやAzure、Always on Permなどの暗黙的なインフラストラクチャにすでに購入していますか? ** D:**私のソース管理の選択肢は柔軟か、特定のアーキテクチャ技術を暗示していますか?これらの質問にまず答えます。 –

答えて

1

設定変換を作成し、公開プロファイルで使用できます。各設定(デバッグ、リリース、YourOwnConfig ...)について、その設定で指定されたファイルが存在します(Web.Debug.config、Web.Release.Config、Web.YourOwn.Config、...)

トリックは、あなたが完全な設定ファイルを1つ持っていることです。オリジナルのWeb.Configと変換は、XSLT変換構文を使用してこのファイルとの違いを記述するだけです(新しい変換を作成すると、構文)。 (value="100"で)指定されたもので、既存のClientSessionTimeoutの設定を置き換えます例

<configuration> 
    <appSettings> 
     <add key="ClientSessionTimeout" value="100" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> 
    </appSettings> 
</configuration> 

:たとえば、のappSettingsのようなキールックスのための変換追加。 xdt:locatorは、キー属性が設定のローカライズに使用されることを指定し、xdt:Transformは、上記の属性(ここではvalue)が設定されることを指定しています。

あなたはapplicationSettingsを持っている場合は、あなたが自分自身の設定を交換する必要があります。

<applicationSettings> 
    <WebApplication2.Properties.Settings> 
     <setting name="Setting" serializeAs="String" 
           xdt:Transform="Replace" xdt:Locator="Match(key)"> 
      <value>Some value</value> 
     </setting> 
    </WebApplication2.Properties.Settings> 
</applicationSettings> 

違いは、たとえば、データソースの設定になります、などのWebサービスへのURLなど他の環境固有の設定

これらを作成するには、「Debug」などの構成を選択し、Web.Configファイルを右クリックするとコンテキストメニュー項目「Add config transform」が表示されます。これをクリックするとWeb.Debug.ConfigトランスフォームファイルはWeb.Configの下に作成されます。前述のようにそれを適応させます。キー全体または設定をトランスフォームファイルにコピーしてから、前述のように適切なxdt属性を追加します。

最後に、「公開」機能(ウェブプロジェクトを右クリックして選択)を使用することができます。パブリッシュプロファイルを設定できるウィザードが開きます。ここでは、「デバッグ」、「リリース」、および以前に作成したものなどの構成について言及することができます。

ファイルを公開すると、Webプロジェクトを展開するために必要なファイルがまとめられ、さらに適切な変換ファイル(Web.Release.Configなど)を適用してWeb.Configの変換を実行します。公開された設定は "Web.Config"という名前になり、すべての変更が含まれます。

トラブルシューティングのために

とトピックについての詳細を調べるために、私は以下のリンクをお勧めします:

を通知するスタックオーバーフローのサイドバーに関連するリンクが表示されます。

+0

返信いただきありがとうございます。これは本当に助けになりました。しかし、これは複数のweb.configファイルで動作することに限られています。私はまた、動作する複数のapplicationSettingsを持っています。環境に基づいてどのようにロードするのですか? – Ravi

+0

Webプロジェクトに 'applicationSettings'がある場合、それらも' Web.config'ファイルに保存されます。違いは、applicationSettingsは文字列値だけでなく、複雑なデータ型も処理することです。したがって、異なる変換( 'xdt:Transform =" Replace "')を使用して、単一のエントリだけでなく設定全体を置き換えなければなりません。あなたがもっと情報を必要とするかどうか教えてください。それから私は私の答えを更新します。 – Matt

+0

これは動作します。ありがとう。 – Ravi

関連する問題