0

我是新手,对 Linux 有一点了解。说了这么多,总结一下我的问题。我有一个用 winforms 编写的大型应用程序,我希望它在 ubuntu 上运行。我使用了单声道,但在运行单声道迁移分析器后,P/invoke 没有迁移,所以我使用 wine 来运行应用程序。

使用wine,应用程序中的大部分部分工作正常,但在很多情况下崩溃并且性能也很慢。我将消息发送到他们的论坛,但没有解决,如此处所示

在 wine 之后,我尝试查看在 ubuntu 上运行应用程序的可能平台。其中之一将 Avalonia UI 用于前端,C# 代码将被重用。所以我创建了一个原型来查看应用程序是否崩溃或抛出任何异常。它显示了 DLLNotFoundException,在联系 AvaloniaUI 支持后指出 dll 仅在 windows 平台上工作,如此处所示

现在我搜索了解决方案,但他们中的大多数人告诉我使用 wine 或 mono,一些旧的解决方案告诉我使用 gcc,如herehere所示,但 gcc 只能编译 c 和 C++。

有人可以指导我在这里做什么。

4

1 回答 1

1

我已经在您的评论中查看了屏幕截图。

您的问题与 Avalonia 无关,因为 Avalonia 是 UI 框架,并且您正在调用网络例程,例如 NetApiBufferFree(IntPtr buf)。

我想,您可能需要寻找“如何以跨平台方式列出本地网络中的所有计算机”的问题的答案。

我认为您可能需要将解决方案拆分为单独的项目:

第一个是接口,它的目标是一个应用程序,

第二个应该包含您的 Windows 逻辑,代码如下:https ://morgantechspace.com/2014/04/get-list-of-network-computer-names-in-c-sharp.html#Get-Network- PC-名称

第三个可能包含您对特定于 Linux 的例程的调用;在那里你应该检查如何在 C# 上调用 Linux 系统例程。关于这个主题的信息较少,但我会从这里开始:Get list of devices on LAN in C

第一个项目应该依赖于第二个和第三个。

显然,您的解决方案应该针对 .NET Core;或单声道。

于 2020-12-30T18:27:50.707 回答