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

时间:2012-06-12 16:39:17

标签: c# linux mono gmcs

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

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

可以下载源代码here。如果可能,请描述如何编译和运行第2章/ OpeningDocument 解决方案。

$ 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

2 个答案:

答案 0 :(得分:4)

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

gmcs -pkg:dotnet *.cs

最新版本的mono使用mcs代替gmcs。在之前的版本中,mcs的目标是.NET 1.1。

答案 1 :(得分:2)

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

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

专门针对Windows表单,请参阅:http://www.mono-project.com/WinForms

希望这会有所帮助。