2013-02-14 7 views
45

Ich versuche, meine Verbindungszeichenfolge von meinem App.config zu trennen, und da Sie Transformationen wie mit Web.config nicht tun können, dachte ich, könnte ich das configSource Attribut verwenden, um auf eine andere Konfiguration zeigen Datei mit der Verbindungszeichenfolge in, aber es scheint nicht zu funktionieren.connectionStrings configSource in App.config funktioniert nicht

Dies funktioniert, 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> 

Aber dies nicht der Fall, 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> 

Ich suche nach den einfachsten Lösungen.

Irgendwelche Ideen?

+1

_Was funktioniert nicht? Was sind die Symptome? Was du gepostet hast, funktioniert für mich. Sind die '.config' Dateien im selben Verzeichnis? – Oded

+0

Die Klasse, die ich verwende, verwendet einen 'DbContext', der einen Verbindungszeichenfolgenparameter verwendet, also übergebe ich diese DefaultConnection. Es funktioniert, wenn der connectionString in der App.config, aber nicht in der separaten Datei definiert ist. –

+1

Stellen Sie sicher, dass beide Dateien gespeichert sind und sich im selben Verzeichnis befinden (oder dass der relative Pfad in 'configSource' korrekt ist). – Oded

Antwort

116

Wenn Sie die Datei selbst hinzugefügt haben, wurde die Erstellungsaktion (in den Dateieigenschaften) möglicherweise nicht korrekt festgelegt.

Die Copy to Output Directory Option muss Copy if newer oder Copy Always sein, um sicherzustellen, dass die .config Datei im Verzeichnis bin endet, sonst wird es nicht da sein und zu versuchen, die Konfiguration zu laden fehl.

+2

Arbeitete perfekt. Danke, Mann! –

+4

Völlig vergessen.Thanks a bund :) –

+10

Hinweis: So, in einigen Web-Anwendungen, müssen Sie auch Verweis hinzufügen: configSource = "bin \ connections.config" anstelle von configSource = "connections.config" – piotrwest

1

Ich hatte das gleiche Problem und Oded Lösung funktioniert für mich. Aber ich will, dass nur genau um herauszufinden, wie die Datei „auf Output Directory Option Kopieren“ ändern „kopieren, wenn neuere oder kopieren immer“ zu sein, müssen Sie

  • rigth auf die Datei
  • wählen Eigenschaften
  • gehen
  • dann werden sehen, kopieren, um das Ausgabeverzeichnis und Wahl kopieren, wenn neuere oder kopieren mich immer

Dies half vorzurücken, ich hoffe, es wird Ihnen auch

helfen 210
Verwandte Themen