C# 跨平台问题:让LibUsbDotNet在Win/Linux上使用相同的可执行文件

C# 跨平台问题:让LibUsbDotNet在Win/Linux上使用相同的可执行文件,c#,.net,linux,cross-platform,libusb,C#,.net,Linux,Cross Platform,Libusb,我想在Windows 10上编译一个C#应用程序(VS2019、.NET 4.5、WinForms),它使用LibUsbDotNet库打印连接的USB设备列表。我希望同样的exe能够在Ubuntu上运行,并得到同样的结果 List<LibUsbRegistry> WinDevices = LibUsbRegistry.DeviceList; foreach (LibUsbRegistry usbdev in WinDevices) { print_console(usbdev.

我想在Windows 10上编译一个C#应用程序(VS2019、.NET 4.5、WinForms),它使用LibUsbDotNet库打印连接的USB设备列表。我希望同样的exe能够在Ubuntu上运行,并得到同样的结果

List<LibUsbRegistry> WinDevices = LibUsbRegistry.DeviceList;
foreach (LibUsbRegistry usbdev in WinDevices) {
   print_console(usbdev.FullName);
 }
List WinDevices=LibUsbRegistry.DeviceList;
foreach(WindDevices中的LibUsbRegistry usbdev){
打印控制台(usbdev.FullName);
}
所以我通过NuGet添加了LibUsbDotNet包,并用上面的代码做了一个小项目。编译、运行它,它做了预期的事情。因此,我将exe和LibUsbDotNet.LibUsbDotNet.dll从输出目录复制到Ubuntu(20.10)PC上,并使用Mono运行,但它崩溃了:

System.EntryPointNotFoundException: CreateFile assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) LibUsbDotNet.Internal.Kernel32.CreateFile(string,LibUsbDotNet.Internal.NativeFileAccess,LibUsbDotNet.Internal.NativeFileShare,intptr,LibUsbDotNet.Internal.NativeFileMode,LibUsbDotNet.Internal.NativeFileFlag,intptr)
  at LibUsbDotNet.Internal.LibUsb.LibUsbDriverIO.OpenDevice (System.String deviceFileName) [0x00000] in <860e43ad45e14d59bf62e8efe5c0922a>:0 
  at LibUsbDotNet.LibUsb.LibUsbRegistry.get_DeviceList () [0x00011] in <860e43ad45e14d59bf62e8efe5c0922a>:0 
System.EntryPointNotFoundException:CreateFile程序集:类型:成员:(null)
在(包装器管理为本机)LibUsbDotNet.Internal.Kernel32.CreateFile(字符串,LibUsbDotNet.Internal.NativeFileAccess,LibUsbDotNet.Internal.NativeFileShare,intptr,LibUsbDotNet.Internal.NativeFileMode,LibUsbDotNet.Internal.NativeFileFlag,intptr)
位于:0中的LibUsbDotNet.Internal.LibUsb.LibUsbDriverIO.OpenDevice(System.String deviceFileName)[0x00000]
在LibUsbDotNet.LibUsb.LibUsbRegistry.get_DeviceList()[0x00011]中:0
那么我做错了什么?.dll是问题所在吗?几天来,我一直在尝试这样做,但没有任何运气。任何帮助都会非常棒