2

我有一个在 C# 和 .Net 中开发良好的 Windows 应用程序,它在 UI(表单)模式和命令行模式下也能很好地工作。

但是现在,它需要能够在 Mac 和 Linux 等其他平台上使用。

是否可以在不使用 Java 重新编码或重新开发的情况下使用它?

4

3 回答 3

5

对于跨平台的 .NET,您可以查看Mono项目。

Mono 是一个软件平台,旨在让开发人员轻松创建跨平台应用程序。Mono 由 Xamarin 赞助,是基于 C# 的 ECMA 标准和公共语言运行时的 Microsoft .NET 框架的开源实现。不断壮大的解决方案系列和积极热情的贡献社区正在帮助 Mono 成为 Linux 应用程序开发的首选。

于 2013-08-20T09:38:02.077 回答
4

是否可以在不使用 Java 重新编码或重新开发的情况下使用它?

是的。Swing 和 JavaFX 是用于桌面应用程序的 GUI 工具包。两者均由 Sun/Oracle 提供(分别具有 1.2/1.7 Java 版本),并且是开源的。当然,Java 支持布局本地化(例如,LINE_START如果用户使用从左到右的语言,则布局约束将组件放置在左侧,如果他们的本地语言是从右到左编写,则在右侧)和语言本地化(IL8N)。

  • Java FX 是 Oracle 的“下一代”GUI 工具包。我还没有经验,但知道它是跨平台的。
  • Swing 是一个全面、成熟、健壮的 GUI 工具包。Swing 支持 Layout Managers 和 Look-&-Feel,它们的结合使我们能够以“本机”外观和感觉显示 GUI,并且还可以为该外观合理地调整组件的大小和位置。有关显示最终结果的代码和屏幕截图(下面的 2),请参阅嵌套布局示例。

Windows 外观和感觉

OS X 'Aqua' 外观和感觉

于 2013-08-20T09:42:20.103 回答
2

是否可以在不使用 Java 重新开发的情况下使用它?

是的,使用单声道。你可以看看Mono项目

在 Linux 和 Mac 中执行时可能会遇到一些问题

  1. .resx 文件不会在单声道中执行。要么您必须使用 Monodevelop 开发单声道特定 UI,要么选择 .resx 文件构建操作属性为无
  2. 使用 Path.Combine 而不是硬编码路径
  3. 使用 #if ..#elif.. #endIf 等预处理器指令执行特定于平台的代码
于 2013-08-20T09:57:13.007 回答