我正在为第三方程序编写扩展名(dll)。主程序使用log4net 1.2.10版。我想使用LinqToExcel来读取Excel文件,这也取决于较新版本的log4net。
当我使用主可执行文件中的log4net.dll时,我在使用扩展时得到System.BadImageFormatException
。
当我用LinqToExcel中的较新版本替换log4net.dll时,我从主程序中获得System.NullReferenceException
。
有没有办法让这个工作,或者我是否必须使用其他方式来阅读Excel文件?
替代方法:我确实从LinqToExcel中删除了所有日志记录,并在没有log4net引用的情况下重建了它。
答案 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构建。