有一个gmcs
编译器可以编译为.NET 2.0
常见问题
dmcs,gmcs和smcs之间有什么区别
它们是具有三组不同默认值的相同编译器。
- dmcs:引用4.0-profile库(.NET 4.0中定义的API)并支持C#4.0。
- gmcs:引用2.0-profile库(.NET 2.0和.NET 3.5中定义的API)并公开完整的C#3.0语言。
- smcs:引用2.1-profile库(为Silverlight定义的API)并公开完整的C#3.0语言。这是用于创建Silverlight / Moonlight应用程序的编译器。
但是,我今天卸载了libreoffice。然后gmcs
命令也消失了。
我已卸载单声道
sudo apt-get purge mono-runtime
sudo apt-get autoremove
并重新安装
sudo apt-get install mono-complete
完成安装单声道后。
仍然没有gmcs
命令。
因此,我尝试使用mcs
来编译面向.NET 2.0的代码。
但我不知道该怎么做。
例如:
此代码
using System;
public delegate void MyFunc();
public class Test
{
public void Show()
{
Console.WriteLine("Show...");
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Main...");
Test t = new Test();
MyFunc f = t.Show;
f();
}
}
不应使用.NET 2.0平台编译。
因为{2.0}中没有Action Delegate
请参阅:https://msdn.microsoft.com/en-us/library/system.action%28v=vs.110%29.aspx
我已尝试将-sdk -langversion
参数添加到mcs
,但上面的代码仍然已编译。没有错误,没有警告......
那么,如何使用mcs
编译代码目标到.NET 2.0
答案 0 :(得分:1)
mcs help显示选项sdk,它接受值2,4,4.5 将sdk设置为2,这样你就可以定位2
确保编译.net 2所需的是将程序集路径设置为.net 2路径
-lib:“.net 2程序集的路径”