【发布时间】:2021-04-07 01:28:10
【问题描述】:
我是新手,对 Linux 有一点了解。说了这么多,总结一下我的问题。我有一个用 winforms 编写的大型应用程序,我希望它在 ubuntu 上运行。我使用了 mono,但是在运行 mono 迁移分析器后,P/invoke 没有迁移,所以我使用 wine 来运行应用程序。
使用wine,应用程序中的大部分部分工作正常,但在很多情况下崩溃并且性能也很慢。我将消息发送到他们的论坛,但未解决,如 here
在 wine 之后,我尝试查看在 ubuntu 上运行应用程序的可能平台。其中一个使用 Avalonia UI 作为前端,C# 代码将被重用。所以我创建了一个原型来查看应用程序是否崩溃或抛出任何异常。它显示了 DLLNotFoundException,在联系 AvaloniaUI 支持后指出 dll 仅在 Windows 平台上工作,如 here
现在我搜索了解决方案,但大多数人告诉我使用 wine 或 mono,一些旧的解决方案告诉我使用 gcc,如 here 和 here 所示,但 gcc 只能编译 c 和 C++。
谁能指导我在这里做什么。
【问题讨论】:
-
你准备在你的应用程序中重写什么,你想要实现什么,我的意思是你需要一个跨平台的解决方案,一个 ubuntu 唯一的解决方案吗?是什么阻止您将其改写为在 ubuntu 上运行良好的东西。关于在 ubuntu 上运行的其他内容,忽略 wine 和 mono .net 核心运行在那里,但对 GUI 没有任何好处,除非你用 web 前端和本地服务器(例如 Kestrel)运行重写它。如果你只是希望它在 c# 和 Visual Studio 中,你可以使用 xamarin,但是你手上会有相当大的重写,听起来都不是很好。
-
对avalonia不太了解,所以我无法对此发表评论。
-
我想在跨平台上重写应用程序,对于 GUI,我使用使用 xaml 设计前端的 avalonia。我在 avalonia 中创建了一个程序并显示了 GUI。问题出在 netapi32.dll 上,它在 ubuntu 上不起作用(我只在 ubuntu 中测试它)。 In this link you can view the error when running it on ubuntu
标签: c# linux mono wine avalonia