4

一般的な質問がありますが、私が何を意味するのかをよりよく理解できるように、なぜ私が質問しているのかについても説明します。

[設定]でWebサービスのURLが定義されているdllがあり、実行時にSettings.Defaultを使用して設定からURLを取得します。ただし、どの環境にも(dllName).dll.configファイルがなく、呼び出し元のアプリケーションの(exeName).exe.configで特定の設定が定義されていません。デフォルト値が内部IPアドレスに設定されているため、デフォルト値が使用されていないことは明らかです。それでも、これは本番環境で機能します。この設定は、私が見つけた.configファイルで定義されておらず、何らかの形で正しいWebサービスURLにアクセスしています。この場合、値がどこからロードされているかを知る必要があります。

ですから、私のより広い質問は、.netに設定をロードするために階層がどのように機能するかということです。たとえば、最初にmachine.configを検索し、次に(exeName).exe.configを検索し、dllの場合は(dllName).dll.configに移動しますか?それは最初にどこに見えますか、そしてそれは他の場所でどのような順序で見えますか、そして私がこの構成を定義できると私が言及しなかった他の場所はありますか?

また、DLLの場合、[設定]で定義されているものがある場合、それはコンパイルされたdllにデフォルト値として埋め込まれ、プロパティが他の.configファイルに見つからない場合に使用されますか?

4

1 に答える 1

7

.NET構成の階層的な性質により、非常に高いレベルの柔軟性が提供され、特定のユーザーまたは場所が独自の構成設定を持つことができます。ただし、これらの構成設定は分離されておらず、より具体的なレベルで行われた重複設定には、より具体的でないレベルで行われた設定を上書きする機能があります。写真に見られるように、最も具体的な構成ファイルは、最も具体的でない設定にマージされ、最も具体的な設定が最も具体的でない設定をオーバーライドします。Exeのコンテキストでは、ユーザー(より正確にはローカルユーザー)の設定が最も具体的であり、次に移動ユーザー(2台以上のマシン間で共有)、アプリケーション、最後にマシンが続きます。

構成階層とマージ

あなたの答えは単なる引用であるため、次の記事を読むことをお勧めします。

そして、役に立つでしょう:

于 2012-10-10T15:04:05.070 に答える