类库中的System.NullReferenceException

时间:2016-12-14 17:42:43

标签: c# excel excel-dna

我正在尝试在app.config中配置一些连接字符串,但不断收到此错误消息,

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

我在网上看过很多解决方案,但没有直接适用,

  • 我正在将app.config文件复制到目标目录
  • 我引用了System.Configuration并使用了ConfigurationManager
  • XML /源几乎是Microsoft 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 个答案:

答案 0 :(得分:2)

配置文件的名称需要与ExcelDNA创建的.XLL文件的名称相匹配。

e.g。

MyApp-AddIn.xll - &gt; MyApp-AddIn.xll.config

MyApp-AddIn64.xll - &gt; MyApp-AddIn64.xll.config

答案 1 :(得分:1)

  • 库没有自己的 $responce[$size-1] = array_merge($responce[$size-1] , array( $data['dorder_id'], $data['dpaid_status'], $data['commission'] ) ); 文件,它们属于父可执行文件。
  • Excel.exe没有自己的app.config文件。
  • 连接字符串app.config在运行时使用的任何配置文件(如果有)中都不存在。您可以先检查是否ConnectionCSV并在密钥不存在时警告用户来验证这一点。

在您的情况下,最好将连接字符串存储在用户的注册表中。致白:

<强>更新

我刚刚在MSDN上找到了这个页面,它描述了您的确切问题,并解释了如何ConfigurationManager.ConnectionStrings["ConnectionCSV"] != null文件与Office加载项一起使用:https://msdn.microsoft.com/en-us/library/16e74h9c.aspx

具体做法是:

  

在[app.config filename]框中,键入与程序集相同的名称以及扩展名.config。例如,名为app.config的Excel项目程序集的配置文件将命名为ExcelWorkbook1.dll