Web.Debug.configおよびWeb.Release.Configファイルは何のためのものですか?


110

Visual Studio 2010とMVC 2.0にアップグレードしましたが、Web.configに2つの追加ファイルが添付されていることに気付きましたか?これらのファイルは、デバッグとリリース固有の設定を指定するために使用されているので、メインのWeb.configを散らかしていませんか?

デバッグとリリースのWeb.configsにそれぞれローカルとリモートの接続文字列がある場合、ルートWeb.configファイルに接続文字列を配置しても意味がありますか?

ありがとう!

回答:


97

これは、Visual Studio 2010の新しいWeb.config変換機能です。詳細については、こちらをご覧ください


編集:

これらのファイルは、デバッグとリリース固有の設定を指定するために使用されるので、メインのweb.configを散らかしませんか?

3つのファイルに限定されず、(理論的には)環境と同じ数のファイルを作成できます。「トップレベル」のWeb.configは、Web構成のテンプレートを提供します。その下のファイルは、その環境に固有の置換値を提供します(ローカル/ステージ/テスト/その他の接続文字列が異なる場合など)。

デバッグとリリースのweb.configsにそれぞれローカルとリモートの接続文字列がある場合、ルートのweb.configファイルに接続文字列を配置しても意味がありますか?

環境間で変化しない場合にのみ意味があります。あなたの場合はそのように聞こえますが、あなたの場合はいいえ、それをWeb.configに残しておくのは意味がありません。


12
この機能は、4年後でも半分焼き尽くされています!azure / publishingパッケージにデプロイする場合にのみ機能します。ここに興味深いスレッドがあります:forums.asp.net/t/1532038.aspx
Nick

12

これらはWeb.config変換ファイルです。Visual Studioを使用したASP.NET Web配置から:Web.configファイル変換

Web.configファイル設定の変更プロセスを自動化するには、Web.config変換とWeb配置パラメーターの2つの方法があります。Web.config変換ファイルには、展開時にWeb.configファイルを変更する方法を指定するXMLマークアップが含まれています。 特定のビルド構成および特定のパブリッシュプロファイルに異なる変更を指定できます。デフォルトのビルド構成はデバッグとリリースであり、カスタムビルド構成を作成できます。公開プロファイルは通常、宛先環境に対応しています。


1

誰かが興味を持っている場合のために、環境ごとに動的な接続文字列を持つように私が書いたものを次に示します。接続文字列の変更を気にすることなく、コードを任意の環境(Dev、Test、Pre-Prod、Prod ...)にデプロイしたかったのです。Asp.Net MVC 4でこれを行うための良い方法を本当に見つけることができなかったので、環境ごとにプロパティファイルに依存する独自の方法を考え出しました。

より良い解決策があるかもしれません、私はWicket / Javaのバックグラウンドから来て、最近MVC 4で開発を始めたので、より良い解決策が存在する可能性があります。しかし、ここに動的接続文字列に対する私の質問と回答へのリンクがあります:

Asp.net MVC 4動的接続文字列


-3

それはVSで長く必要なものでした。残念ながら、実装に問題があるようです。たとえば、次のシナリオを検討してください(VS.2010 Ultimate、すべてSP):

Web.Config

  • connectionStringsセクションがありません
  • 完全なメンバーシップユーザー/ロール/など。connectionStringName = "test"を使用したプロバイダー構成

Web.Release.Config

  • メンバーシップ構成なし(メインのweb.configで既に指定されている)
  • 「test」という名前のCSを含むconnectionStringsセクション

Web.Debug.Config

  • メンバーシップ構成なし(メインのweb.configで既に指定されている)
  • 「test」という名前のCSを含むconnectionStringsセクション

アプリケーションを実行すると、次のエラーが発生します。

接続名 'test'がアプリケーション構成で見つからなかったか、接続文字列が空です。

つまり、接続文字列要素はRelease / Debugデザイナーファイルにあり、メイン(Web.config)ファイルの構成要素によって使用されるため、解決できません。


5
公平を期すためにtest、デバッグ構成ファイルとリリース構成ファイルの両方で接続文字列が指定されている場合は、適切なセクションがテンプレート化されたメインのweb.configにあるはずです。現状では、コードを複製しています。これはテンプレートが解決するはずのものです。
R0MANARMY 2012年

3
-1:この非常に古い投稿は、Web構成変換の使用方法を完全に誤って解釈したものでした。1これは実際には答えではありません(単なる誤った苦情です)。2ここに示されているように、単純な要素のマージではありません。明示的なxslt置換コマンドが必要です。これらの変換ファイルについての混乱に追加するもののために5つの賛成票を取得することでうまくいきました :)
Gone Coding
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.