web-dev-qa-db-fra.com

connectionStrings configSource dans App.config ne fonctionne pas

J'essaie de séparer ma chaîne de connexion de mon App.config, et comme vous ne pouvez pas faire de transformations comme avec Web.config, J'ai pensé que je pourrais utiliser l'attribut configSource pour pointer vers un autre fichier de configuration avec la chaîne de connexion, mais cela ne semble pas fonctionner.

Cela marche, 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>

Mais ce n'est pas le cas, 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>

Je recherche la solution la plus simple.

Des idées?

54
Adam K Dean

Si vous avez ajouté le fichier vous-même, l'action de génération (dans les propriétés du fichier) peut ne pas avoir été définie correctement.

Le Copy to Output Directory l'option doit être Copy if newer ou Copy Always pour garantir que le .config le fichier se retrouve dans le répertoire bin, sinon il ne sera pas là et la tentative de chargement de la configuration échouera.

127
Oded

J'ai eu le même problème et la solution Oded fonctionne pour moi. Mais je vais juste préciser que pour savoir comment changer le fichier "Option Copier vers le répertoire de sortie" pour être "copier si plus récent ou copier toujours", vous devez

  • cliquez sur le fichier
  • sélectionner les propriétés
  • aller de l'avant
  • verra alors la copie dans le répertoire de sortie et choisira la copie si elle est plus récente ou la copie toujours

Cela m'a aidé, j'espère que cela vous aidera aussi

3
onlyme