web-dev-qa-db-ja.com

App.configのconnectionStrings configSourceが機能しない

接続文字列をApp.configから分離しようとしていますが、Web.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ではありません:

<?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

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

最も簡単なソリューションを探しています。

何か案は?

54
Adam K Dean

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

Copy to Output DirectoryオプションをCopy if newerまたはCopy Alwaysにして、.configファイルがbinディレクトリにあることを確認する必要があります。そうでない場合、構成をロードしようとすると失敗します。

127
Oded

私は同じ問題を抱えていましたが、Odedソリューションが有効です。しかし、「出力ディレクトリにコピー」オプションを「新しい場合は常にコピーする」、「常にコピーする」ファイルに変更する方法を見つけるには、

  • ファイルを正しくクリック
  • プロパティを選択
  • 前進する
  • その後、出力ディレクトリへのコピーが表示され、新しいまたは常にコピーする場合はコピーを選択します

これは私を助けた、私もそれがあなたを助けることを願っています

3
onlyme