2016-12-14 87 views
0

我想配置的app.config某些連接字符串,但不斷收到此錯誤信息,System.NullReferenceException在類庫

System.NullReferenceException: Object reference not set to an instance of an object. 

我看了網絡上的多種解決方案,但沒有直接適用,

  • 我複製的app.config文件到目標目錄
  • 我引用System.Configuration和正在使用ConfigurationManager
  • 的XML /源幾乎是微軟guidelines

的唯一區別的完整副本是,該項目是一個類庫,這我通過ExcelDNA暴露到Excel。

有什麼特別的我需要做的,以使其與Excel一起工作?

下面是XML的一個片段,

<configuration> 
    <connectionStrings> 
     <add name="ConnectionCSV" providerName="System.Data.OleDb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;" /> 
    </connectionStrings> 
</configuration> 

這是源代碼(有必要參考沿有一個using System.Configuration

string constr = ConfigurationManager.ConnectionStrings["ConnectionCSV"].ConnectionString; 

上述線拋出Object reference not set to an instance of an object錯誤。

回答

2

配置文件的名稱需要與由ExcelDNA創建的.XLL文件的名稱相匹配。

例如

MyApp-AddIn.xll - >MyApp-AddIn.xll.config

MyApp-AddIn64.xll - >MyApp-AddIn64.xll.config

+0

非常感謝Caio。你擊中了要害! – insomniac

1
  • 圖書館沒有自己的app.config文件,它們屬於母公司的可執行文件。
  • Excel.exe沒有自己的app.config文件。
  • 連接字符串ConnectionCSV在任何配置文件中(如果有的話)在運行時都不存在。您可以通過首先檢查ConfigurationManager.ConnectionStrings["ConnectionCSV"] != null來驗證該情況,並在密鑰不存在的情況下警告用戶。

在你的情況下,可能會更好地將連接字符串存儲在用戶的註冊表中。要白衣:

更新

我剛剛發現這個MSDN頁面描述您的具體問題,並解釋瞭如何可以使用app.config文件與Office加載項:https://msdn.microsoft.com/en-us/library/16e74h9c.aspx

具體做法是:

在[app.config文件名]框中,輸入與程序集加上擴展名.config相同的名稱。例如,稱爲ExcelWorkbook1.dll的Excel項目程序集的配置文件將被命名爲ExcelWorkbook1.dll.config

+0

非常感謝戴。進一步的澄清有所幫助。在'_bleeding obvious_'下提交此問題。 ;-) – insomniac

相關問題