簡體   English   中英

類庫中的System.NullReferenceException

[英]System.NullReferenceException in a class library

我正在嘗試在app.config中配置一些連接字符串,但始終收到此錯誤消息,

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

我在網絡上看過許多解決方案,但沒有直接適用的方法,

  • 我正在將app.config文件復制到目標目錄
  • 我引用了System.Configuration並正在使用ConfigurationManager
  • XML /源代碼幾乎是Microsoft 指南的逐字副本。

唯一的區別是該項目是一個類庫,我將通過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錯誤Object reference not set to an instance of an objectObject reference not set to an instance of an object

配置文件的名稱必須與ExcelDNA創建的.XLL文件的名稱匹配。

例如

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

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

  • 庫沒有自己的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM