Nuget 包引用库在 Linux 和 Windows 上具有不同的名称

Posted

技术标签:

【中文标题】Nuget 包引用库在 Linux 和 Windows 上具有不同的名称【英文标题】:Nuget package referenced library has different names on Linux and Windows 【发布时间】:2019-07-15 12:37:10 【问题描述】:

我正在研究将在 Windows 和 Linux 上运行的小型数据包嗅探器。对于嗅探数据包,我使用 SharpPcap。 SharpPcap 在 Windows 上运行没有问题。在 Linux 上,需要进行一些调整才能使一切正常运行,因为 Linux 没有使用 Wpcap.dll 而是使用 Libpcap.so,我收到错误/异常,因为 wpcap dll/so 没有成立。这些调整取决于我为项目选择的框架。

Linux(Ubuntu 18.04):

我使用 apt-get install libpcap-dev 安装了 libpcap。

1。 .NET 框架 4.6.1

必须在 SharpPcap.dll.config 中将 wpcap 映射到 libpacap。然后用单声道运行 MyProject.exe 不会引发异常,一切正常。

2。 .NET Core 2.1 项目。

libpcap.so 需要重命名 wpcap.so 然后“dotnet run”命令运行项目没有问题,一切正常。

在这两种方法中,一切似乎都运行良好,但他们的背景感觉有些不对劲。我是这类问题的新手。您能否帮我在这两者之间进行选择,或者帮我找到其他方法让 nuget 包 sharppcap 在 Linux 和 Windows 上都可以工作?

谢谢

【问题讨论】:

“包”是什么意思?安装人员? 我的意思是 Shappcap nuget 包。对不起,我可以写得更清楚。我编辑了问题。 映射到不同平台的不同原生库应该是SharpPcap作者的职责。您可以向他们报告此问题或提出拉取请求。更改库的名称(libpcap.so 为 wpcap.so)显然不是正确的方法。 我向他们发送了一个拉取请求,github.com/chmorgan/sharppcap/pull/61,一旦合并,您不需要在 Linux 上做任何特别的事情。 我一直相信比我找到的两个更好的解决方案。非常感谢您的帮助@LexLi。我会记住你向我展示的这种方法。 【参考方案1】:

库已更新,现在可以在 Linux 上正常运行。

【讨论】:

以上是关于Nuget 包引用库在 Linux 和 Windows 上具有不同的名称的主要内容,如果未能解决你的问题,请参考以下文章

Docker在Linux上运行NetCore系列使用私有Nuget与多个本地包引用运行ASPNetCore

nuget 包与其引用的 nuget 包之间的不同版本

无痛本地开发,同时还引用 NuGet 包

此项目引用此计算机上缺少的 NuGet 包

NuGet - 在单一解决方案中管理和删除多版本包

nuget 包引用引发的问题