私は簡単に&を探しています。異なる環境に基づいてweb.configのappsettings
を変更するには、エレガントな方法があります。(dev/qa/test/stage/prod )そして私は手動でappsettings
を変更しています。その非常に面倒で時間がかかり、数十の設定があります。このような状況では、どのような方法が最適ですか?私はEnvironment variables
を使用して1つの解決策を知っていますが、ベストプラクティスを聞きたいですか?asp.netを使用して別のサーバーに基づいてweb.configを更新します。
答えて
私はウェブの外付けセクションを使用することをお勧めします。そのような設定、:
<appSettings configSource="appsettings.config" />
はその後appsettings.configはそうのようになります。
<appSettings>
<add key ...>
</appSettings>
まだ私がメインの編集を可能にしながらこれは、私は変更されません別のファイルにアプリの設定を保存することができます実際の構成部分についてはweb.conifigを参照してください。 接続文字列、system.net(電子メール設定用)などと同じことができます。
私は実際にはconfigを変更するだけで再構築が必要なので、実際にはVS2010はとても良いとは思いません。私のやり方では、VSなしでも使えるので、手作業ですべての環境を簡単に変更できます。
このバージョンでは、web.configファイルは、まさにこの問題を解決することを目的とする機能を変換しているasp.net 4.
にアプリをアップグレードすることができた場合:
私はVS2010を使用していますが、私たちのprodサーバはまだ3.5ですので、私は3.5フレームワークを対象とする必要があります。 –
ええとあなた自身のソリューションをロールバックする必要がある場合(これは長い間です)、web.configの変換機能をNuGetプロジェクトから引き出すことができるかもしれません:http://haacked.com/archive/2010/11 /19/nuget-transformation.aspx – rtpHarry
@rtpHarry、@Chicagoland:.NET 3.5をターゲットにしながら、web.config変換を引き続き使用できます。 VS2010を使用している場合にのみ機能が必要です。 –
私は通常次のようにします:
- 各設定値のバージョン、各環境に1つずつ
- 私のアプリ設定を読むための小さなクラスを作る。このクラスでは、現在の環境を検出する関数を作成します。
- 各設定に対して、環境検出関数を使用して返す値を決定するスイッチを持つアクセサプロパティを作成します。
初期設定は少しですが、設定が完了すると設定値に簡単にアクセスできます。
私はあなたのコンセプトを理解していますが、質問がありますので、私は 'web.config-dev'、' web.config-qa'、 'webを持っています。config-prod'、そして私には、環境iamを返す関数があり、 'qa box'にあると仮定しているので、どのように' web.config-qa'を読むのですか?すでに完了しました。 –
ファイル名の.config部分を変更しないでください。潜在的に(.configファイルが保護されているので)ダウンロードできます... dev.configまたはprod.configをおそらく – davidsleeps
あなたはVS2010(NETツールのバージョン4)を使用する場合、あなたはWeb構成変換を行うと、ステージングに展開する展開パッケージを構築することができ、生産などasp.netのあなたのターゲットバージョンが何であるかは重要ではありません。その後、パッケージを展開し、ターゲットにカスタム構成ファイルをインストールしてください。実行時間を把握する必要はありません。 VS2010が使用するMSBuild 4を使用して、.NETのターゲットバージョンとして3.5を使用して、これを常に行います。私の開発環境は、私の本番環境やステージング環境とは異なるアプリケーション設定をしています。可能であれば
にします実行する必要があるか、または例ですか? –
プロジェクトファイルにターゲットが3.5,2.0などであることを覚えておいてください。$ MSBuildPath = "$($(gp -Path HKLM:\ Software \ Microsoft \ 'NET Frameworkセットアップ' \ NDP \ v4 \ full).InstallPath )MSBuild.exe " $ MSBuildPath $ ProjectFile/T:Package /ToolsVersion:4.0/p:Configuration = Release – piday
は最終的に、私は、Visual Studioの2010年のWeb.config変換機能を利用することをお勧めします。
VS2010はオプションではありませんか、私はしばらく前に思い付いたこのソリューションを見て、コンフィグ変換機能を使用しない場合。バッチファイルとNANTスクリプトの組み合わせを使用して、単一のテンプレートと1つ以上の置換ファイルから設定ファイルを生成します。これはWeb.config変換ツールほど強力ではありませんが、かなり効果的です。
http://blog.nathan-taylor.net/2009/10/webconfig-build-manager.html
前VS2010には、我々は実際に我々のものなどweb.prod.config、web.qa.config、名前の..私は推測する私たちはいくつかの素晴らしいforsightを持っていました。いずれにしても
は、VS2008の下で我々は、我々が構築した構成に基づいて、適切な設定ファイルをコピーするビルドステップの一環として実行されるコピーコマンドを持っていました。私たちの通常のweb.configはdevを指していて、TFSを使って他の環境に展開しました。Nantを使用して、ビルドとデプロイをスクリプト化します。
Nantは、web.configテンプレートとapp.configテンプレートを、プロジェクトファイルが期待する場所にコピーします。同時に、NantはQA環境に適切な値でトークンを置き換えます。
私はあなたがすでに回答を受け入れていることは知っていますが、私は異なる環境に応じて異なる設定ファイルを持っているという方法を使っています。
たとえば、appsettings.config.debug、appsettings.config.deploy、web.config.debug、web.config.deployがあります。
次に、現在の構成設定に関連する構成ファイルを構成設定接尾部なしのファイルにコピーするバッチファイルを実行するビルド前スクリプトがあります。これは、FCを使用してファイルが異なる場合にのみ実行されます。
"$(ProjectDir)copyifnewer.bat" "$(ProjectDir)web.config.$(ConfigurationName)" "$(ProjectDir)web.config"
と
"$(ProjectDir)copyifnewer.bat" "$(ProjectDir)appsettings.config.$(ConfigurationName)" "$(ProjectDir)appsettings.config"
そして、私のcopyifnewer.batファイルは次のとおりです:
私のビルド前のイベントコマンドラインコードがある
echo Config Maintenance
echo Today's date of %date:~-4,4%\%date:~-10,2%\%date:~-7,2%
rem echo Comparing two files: %1 with %2
echo .
if not exist %1 goto File1NotFound
if not exist %2 goto File2NotFound
fc %1 %2
if %ERRORLEVEL%==0 GOTO NoCopy
echo These files are NOT the same. Copying %1 over %2
copy %1 %2 /y & goto END
:NoCopy
echo These files are the same. Nothing copied.
goto END
:File1NotFound
echo %1 not found.
goto END
:File2NotFound
copy %1 %2 /y
goto END
:END
echo Done.
echo .
これは私にとって素晴らしい作品。これが誰かを助けることを望みます。
おかげで、 スコット
- 1. Asp.netイベントに基づいてラベルを更新します
- 2. メインアクティビティの結果に基づいて別のアクティビティのUIを更新します
- 3. 別のテーブルの値に基づいて値を更新してください
- 4. 別のテーブルのカウンタに基づいて列を更新しますか?
- 5. サーバー作業に基づいてページを更新するAjax
- 6. 別のテーブルフィールドに基づいてテーブル列を更新する
- 7. ASP.NETの環境変数に基づいてweb.configファイルを変更する
- 8. モーダルビューのUISwitchに基づいてスクロールビューイメージを更新します。
- 9. asp.netのweb.configファイルを更新します。
- 10. foreachを使用して別のクエリに基づいてmysqlデータベースのフィールドを更新する
- 11. cultureに基づいてASP.NET MVCマスターページを変更します。
- 12. 別のフィールド選択に基づいてGET新しい値の後にドロップダウンの内容を更新します
- 13. 行番号に基づいてテーブルを更新します。
- 14. チェックボックスに基づいてデータベースをテキストボックスで更新します
- 15. struts2:javascriptとjqueryを使用して最初の選択値に基づいてセカンドセレクトを更新します。
- 16. ASP.Net Webアプリケーションを使用してサーバー側でSVNを更新
- 17. jQueryを使用して入力フィールド値に基づいてbackgroundColor LIVEを更新しますか?
- 18. SQL Serverの別のテーブルから別の列に基づいて新しい列を更新
- 19. PHPは条件に基づいてすべてのユーザーを更新します
- 20. 挿入用のテキストボックスに基づいてバインディングソースを更新する
- 21. MVC3 - ドロップダウン選択の更新に基づいてレイアウトを変更します
- 22. Mysqlは別のテーブルからの選択に基づいてすべての行を更新します
- 23. 更新メニューは、スワイプイベントに基づいて
- 24. asp.net-mvc基準に基づいて新しいページにリダイレクトする
- 25. マスターページに基づいてasp.net WebアプリケーションでJQueryを使用してポップアップウィンドウを開く
- 26. ggplots2:別のベクトルに基づいて点の色を変更します。
- 27. Web.configの子ノードの値に基づいてノードを選択します。
- 28. オプションは別のオプションに基づいて属性を変更します
- 29. 別のテーブルの条件に基づいてテーブルを更新する
- 30. 別の列の値に基づいて新しい列を作成する
um ..配備されたすべての設定ファイルを手で簡単に変更することもできます。 – NotMe
インストール固有の設定をすべてのインストールに共通する設定から分離する – Artemiy