如何使用mono mcs编译器来定位.NET 2.0

时间:2015-05-26 06:04:16

标签: c# .net mono

有一个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

1 个答案:

答案 0 :(得分:1)

mcs help显示选项sdk,它接受值2,4,4.5 将sdk设置为2,这样你就可以定位2

确保编译.net 2所需的是将程序集路径设置为.net 2路径

-lib:“.net 2程序集的路径”