Pcap .NET 库:找不到 PcapDotNet.Core.DLL

Posted

技术标签:

【中文标题】Pcap .NET 库:找不到 PcapDotNet.Core.DLL【英文标题】:Pcap .NET library: PcapDotNet.Core.DLL not found 【发布时间】:2019-02-09 23:44:33 【问题描述】:

使用来自 Github (https://github.com/PcapDotNet/Pcap.Net/wiki/Using-Pcap.Net-in-your-programs) 的 PcapDotNet 库,我构建了一个 Windows 服务,它允许远程网络嗅探以进行通信网络故障排除。部署后服务无法启动。

在启动时,Windows 事件日志显示:

Service cannot be started. System.IO.FileNotFoundException: Could not load file or assembly 'PcapDotNet.Core.dll' or one of its dependencies. The specified module could not be found.
File name: 'PcapDotNet.Core.dll' at NewPcapService.svcPcapServer.ServiceStart

按照上面 pcapDotNet wiki 页面中的指南,我在发布模式下构建了项目,并安装了所有推荐的可再发行包。

“缺失”文件 PcapDotNet.Core.dll 与其他 3 个 PcapDotNet DLL 位于与服务 EXE 相同的文件夹中。

我还将所有 4 个 DLL 的副本放在 Windows 和 Windows\System32 文件夹中,但均无济于事。

有人可以帮忙吗?该库是我们为系统故障排除而设计的一些基本网络测试的核心。

【问题讨论】:

【参考方案1】:

请注意,文件可能不是“丢失”,但“其依赖项之一”可能是。

这基本上是Pcap.Net FAQ中的第6题。

请确保您按照Using-Pcap.Net-in-your-programs guide 中的所有步骤操作,因为它很可能会解决您的问题,就像之前为几个人所做的那样。

【讨论】:

“按照上面 pcapDotNet wiki 页面中的指南,我在发布模式下构建了项目,并安装了所有推荐的可再发行包。”另外我应该提到,该服务在我的开发机器上运行良好,但在目标主机上不起作用。现在我正在调查不同 .NET Framework 或 32/64 位目标的问题。【参考方案2】:

虽然(我认为)我遵循了 Using-Pcap.Net-in-your-programs guide 中的建议,但我仍然缺少 x86 的可再发行包。我跳过了它,因为目标主机是 64 位机器。

为简单起见,我通过命令行安装了所有推荐的 VC++ 包:

vcredist_x86_2010.exe /passive /norestart
vcredist_x64_2010.exe /passive /norestart
vcredist_x86_2013.exe /install /passive /norestart
vcredist_x64_2013.exe /install /passive /norestart

现在应用程序运行良好。

【讨论】:

以上是关于Pcap .NET 库:找不到 PcapDotNet.Core.DLL的主要内容,如果未能解决你的问题,请参考以下文章

使用winpcap接口找不到设备

使用 libpcap 读取 zst 压缩 pcap

第三方 dll 在 ASP.NET MVC 项目中找不到它的依赖项

c#在pcap.net中提供包源

.net 数据包捕获:pcap.net 与 Sharppcap

如何将 Pcap.Net 数据包类对象导出到 .pcap 文件