在 Linux 中使用 Windows 窗体编译 C# 代码

本文关键字:窗体 编译 代码 Windows Linux | 更新日期: 2023-09-27 18:36:51

我下载了一些源代码,其中包含使用Windows窗体的C#代码。是否可以在Linux环境(Ubuntu 12.04)下编译代码并运行它?

我已经尝试使用 mcs 成功编译一些 C# 源代码,并使用 mono 运行生成的 exe 文件。

源代码可以在这里下载。如果可能的话,请描述您将如何编译和运行第 2 章/打开文档解决方案。

$ mcs Program.cs 
Program.cs(3,14): error CS0234: The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?
Compilation failed: 1 error(s), 0 warnings

编辑

$ gmcs -pkg:dotnet Program.cs 
Program.cs(17,33): error CS0246: The type or namespace name `Form1' could not be found. Are you missing a using directive or an assembly reference?
Program.cs(17,25): error CS1502: The best overloaded method match for `System.Windows.Forms.Application.Run(System.Windows.Forms.Form)' has some invalid arguments
/usr/lib/mono/gac/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll (Location of the symbol related to previous error)
Program.cs(17,25): error CS1503: Argument `#1' cannot convert `object' expression to type `System.Windows.Forms.Form'
Compilation failed: 3 error(s), 0 warnings

在 Linux 中使用 Windows 窗体编译 C# 代码

如果您没有使用最新版本的 Mono,这应该可以工作:

gmcs -pkg:dotnet *.cs

最新版本的单声道使用mcs而不是gmcs。在前面的版本中,mcs面向 .NET 1.1。

您可能希望针对单声道迁移分析器运行代码,以查看哪些内容失败或不受支持。您可以在此处找到该工具:http://www.mono-project.com/MoMA。注意要使该工具正常工作,您需要访问Windows计算机。

您还可以在 http://www.mono-project.com/Compatibility 查看当前单声道与各种 .Net 功能的兼容性。

具体适用于窗口窗体,请参阅:http://www.mono-project.com/WinForms

希望这有帮助。