我有一個簡單的WinForms應用程序,最終會成爲一款遊戲。現在,我只是在處理它的數據訪問層,並且遇到了一個障礙。我創建了一個名爲DataAccess
的獨立項目,並在其中創建了一個本地的.mdf
SQL Server數據庫文件。我還創建了一個app.config
文件來存儲連接字符串。C#ConfigurationManager從app.config中檢索錯誤的連接字符串
下面是一個配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="TBG_Master"
connectionString="Data Source=(localdb)\MSSQLLocalDb;Integrated Security=true;AttachDbFileName=|DataDirectory|\TBG_Master.mdf"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
爲了取回我使用從this問題拉碼app.config文件中的連接字符串。
Assembly service = Assembly.GetExecutingAssembly();
ConnectionStringsSection css = ConfigurationManager.OpenExeConfiguration(service.Location).ConnectionStrings;
string cs = css.ConnectionStrings["TBG_Master"].ConnectionString;
return cs;
當它到達的地方拉使用字符串作爲鍵連接字符串行了,它給了我一個空引用異常。檢查css.ConnectionString
收集後,唯一的連接字符串它有它看起來像這樣:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
這顯然不在於它是在我的app.config
文件,我知道有沒有其他的app.config
文件在我DataAccess
項目。在調試之後,我知道它正在尋找合適的組件。
爲什麼它給我這個連接字符串,而不是正確的?
連接字符串需要存在於執行*的項目*中,而不是庫項目:例如它需要在你的Winforms項目的app.config中。 – Amy
Ohhhhhhhhhhhhhhhhhhh那麼,這是有道理的。我改變我的代碼,並報告回來,如果它工作:) –
庫中的app.configs僅供參考,或用於編譯時工具。但在運行時,只有正在執行的項目的app.config纔算數。 – Amy