2013-02-14 48 views
45

接続文字列をApp.configから分離しようとしています。Web.configのような変換を実行できないため、configSource属性を使用して別の設定接続文字列を含むファイルが動作しているように見えません。connectionStrings App.configのconfigSourceが機能しない

この作品、App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=*snip*" requirePermission="false" /> 
    </configSections> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
    <connectionStrings> 
    <add name="DefaultConnection" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=*snip*" /> 
    </connectionStrings> 
</configuration> 

しかし、これにはない、App.config:私は最も簡単な探しています

<connectionStrings> 
    <add name="DefaultConnection" 
     providerName="System.Data.SqlClient" 
     connectionString="*snip*" /> 
</connectionStrings> 

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=*snip*" requirePermission="false" /> 
    </configSections> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
    <connectionStrings configSource="connections.config" />  
</configuration> 

connections.configソリューション。

アイデア?

+1

_何かが動作していませんか?症状は何ですか?あなたが投稿したものが私のために働く。 '.config'ファイルは同じディレクトリにありますか? – Oded

+0

私が使用しているクラスは、接続文字列パラメータを取る 'DbContext'を使用しています。そのため、そのDefaultConnectionに渡します。これは、connectionStringがApp.configでは定義されていても、別のファイルでは定義されていない場合に機能します。 –

+1

両方のファイルが同じディレクトリに保存されていることを確認してください(または 'configSource'で相対パスが正しいことを確認してください)。 – Oded

答えて

116

ファイルを自分で追加した場合、ビルドアクション(ファイルプロパティ内)が正しく設定されていない可能性があります。

Copy to Output Directoryオプションは、それ以外の場合はそこではありませんし、コンフィギュレーションをロードしようとすると失敗します、.configファイルがbinディレクトリで終わることを確実にするためにCopy if newerまたはCopy Alwaysする必要があります。

+2

完璧に作業しました。ありがとう! –

+4

これを完全に忘れてしまった。ありがとうございます:) –

+10

注:いくつかのWebアプリケーションでは、configSource = "connections.config"ではなく "configSource =" bin \ connections.config "への参照を追加します。 – piotrwest

1

私は同じ問題を抱えていました.Odedソリューションが私に役立ちます。しかし、私はちょうど正確なファイルを変更した「コピーより新しい場合は、常にコピー」と「出力ディレクトリオプションへコピー」する方法を見つけるためになることを、あなたはrigth

  • 選択ファイルをクリック

    • に持っていますプロパティ
    • が、その後、新しいまたはコピーは常に

    この私を助けている場合、出力ディレクトリと一品コピーにコピーが表示されます

  • を進めるために行く、私はそれがあまりにも

    をあなたを助けることを願っています210