2013-02-14 60 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

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

我正在尋找最簡單的解決方案。

任何想法?

+1

_什麼不工作?有什麼症狀?你發佈的內容適合我。 '.config'文件是否在同一個目錄中? – Oded 2013-02-14 10:58:01

+0

我正在使用的類使用'DbContext',它接受連接字符串參數,所以我傳遞給那個DefaultConnection。它在connection.tring在App.config中定義但不在單獨文件中時起作用。 – 2013-02-14 10:59:50

+1

確保兩個文件都保存在同一個目錄中(或者'configSource'中的相對路徑是正確的)。 – Oded 2013-02-14 11:00:35

回答

116

如果您自己添加了文件,生成操作(在文件屬性中)可能沒有正確設置。

Copy to Output Directory選項必須Copy if newerCopy Always,以確保.config文件中bin目錄結束,否則就不會在那裏,並試圖加載配置將失敗。

+2

完美工作。謝啦! – 2013-02-14 11:38:24

+4

完全忘了這一點。謝謝一堆:) – 2013-04-17 16:54:51

+10

注意:因此,在一些網絡應用程序中,您將太引用添加到:configSource =「bin \ connections.config」,而不是configSource =「connections.config」 – piotrwest 2015-10-28 12:45:45

1

我有同樣的問題,Oded解決方案適用於我。但我只是精確,要找出如何更改文件「複製到輸出目錄選項」是「副本,如果新的或始終複製」,你必須

  • 分辯點擊文件
  • 選擇性能
  • 去推進
  • 然後就會看到複製到輸出目錄和複製的choise如果更新或總是

這幫助了我,我希望它會幫助你太

複製210
相關問題