2

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

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

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

有没有办法让它工作,还是我必须使用其他方式来读取 Excel 文件?

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

4

2 回答 2

1

log4net 的来源 LinqToExcel的来源

我建议你用 dll 调试来发现问题。如果你没有兴趣去发现问题,我建议你使用 ADO.net 从 excel 文件中获取数据,就像从数据库中读取数据一样

于 2014-10-21T10:07:02.747 回答
1

如果您拥有主程序的所有权,则可以使用其他依赖程序集使用的版本(如果更新)更新 log4net 版本 1.2.10。理论上,log4net 应该是向后兼容的。虽然我看到最新的LinqToExcel 版本 1.10.1使用的 log4net 版本比您的主应用程序更旧,特别是 1.2.9 用于该版本,1.2.1.40796 用于 NuGet。

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

于 2014-10-21T10:28:34.967 回答