当主可执行文件使用旧的log4net版本时,在dll中使用LinqToExcel

时间:2014-10-21 09:44:08

标签: c# dll log4net linq-to-excel

我正在为第三方程序编写扩展名(dll)。主程序使用log4net 1.2.10版。我想使用LinqToExcel来读取Excel文件,这也取决于较新版本的log4net。

当我使用主可执行文件中的log4net.dll时,我在使用扩展时得到System.BadImageFormatException

当我用LinqToExcel中的较新版本替换log4net.dll时,我从主程序中获得System.NullReferenceException

有没有办法让这个工作,或者我是否必须使用其他方式来阅读Excel文件?

替代方法:我确实从LinqToExcel中删除了所有日志记录,并在没有log4net引用的情况下重建了它。

2 个答案:

答案 0 :(得分:1)

source of log4net Source of LinqToExcel

我建议您使用dll调试以查找问题。如果您没有兴趣找到问题,我建议您使用ADO.net从excel文件中获取数据,就像从数据库中读取数据一样

答案 1 :(得分:1)

如果您拥有主程序的所有权,则可以使用您的其他从属程序集使用的版本更新log4net版本1.2.10(如果它更新)。从理论上讲,log4net应该是向后兼容的。 虽然我发现最新的LinqToExcel release 1.10.1使用的是旧版本的log4net,而不是主应用程序,特别是发行版的1.2.9和NuGet的1.2.1.40796。

由于您的主应用程序使用较新的程序集而不希望修改LinqToExcel,因此您可以将对log4net 1.2.10的引用包装到ILMerge-d程序集中。相反,您可以拥有自己只使用log4net 1.2.10的LinqToExcel构建。