2011-07-07 11 views
3

web.debus.configファイルを使用して変換されたweb.configファイルがあります。 System.Configuration.ConfigurationManager.AppSettingsを介してこれらの値にアクセスしようとすると何も起こりません。System.Configuration.ConfigurationManagerを通して利用可能なweb.configトランスフォーム要素

私のweb.configのappSettingsは空です。

<configuration> 
    <appSettings> 
    </appSettings> 
</configuration> 

私のweb.debug.configトランスフォームが適用されます。ここにサンプルがあります。

<configuration> 
    <appSettings> 
     <add key="CommonURL" value="localhost/mysite/" xdt:Transform="Insert" /> 
    </appSettings> 
</configuration> 

これは、この値を取得してnullを返すコードです。

var cu = System.Configuration.ConfigurationManager.AppSettings["CommonURL"]; 

なぜこのようなことが考えられますか?

答えて

2

Visual Studioから実行すると、System.Configuration.ConfigurationManager.AppSettingsは何も得られないと仮定すると、これは予想される動作です。これらの変更は、あなたは、Visual Studioから実行したときにweb.configで指定された値を取得できるようになります、とすることを許可します

<add key="CommonURL" value="localhost/mysite/" 
    xdt:Transform="Replace" xdt:Locator="Match(key)" /> 

:あなたのweb.configファイルにCommonURLのAppSettingを追加し、にweb.debug.configにエントリを変更する必要があります変換を実行するとき(たとえば、発行機能またはカスタムMSBuildスクリプトを使用して)、web.debug.configで定義されている値に置き換えられます。トランスフォームはパブリッシュ時に適用され、デバッグまたはリリースビルドの実行開始時には適用されません。 web.configファイル内の値は常に有効です。

+0

私の最初の解決策は、web.configでそれらを使用することでしたが、プロジェクトを実行するたびに変換が行われると仮定しました。それをクリアしていただきありがとうございます。 –

+0

問題はありません。うれしく思っています。ちなみに、この質問への私の答えをチェックすると(http://stackoverflow.com/questions/3422289/how-to-use-visual-studio-2010-config-transform-when-running-debugging-locally/4941639#4941639 )、ビルドイベントを使用してVisual Studioで変換を適用する方法がありますが、最小限に抑えるのは賢明ではありません。私は個人的にはそのアプローチを使用しませんが、興味があればそれを行うことができます。 – rsbarro

関連する問題