本页介绍了四种不同的单声道编译器--mcs/gmcs/smcs/dmcs.
对我来说,有四个C#编译器有点奇怪.通常,较新版本的编译器保持向后兼容性.
我认为这是因为运行时支持问题,但Microsoft的C#有一个支持所有运行时版本的csc.exe.
Mik*_*son 20
这是因为Mono的编译器是用C#编写的,并且使用System.Reflection,这意味着它只能从运行它的运行时访问mscorlib.因此,例如,smcs不只是针对2.1,它实际上使用 2.1 corlib等.
有一段时间计划让*mcs使用Mono.Cecil或Ikvm.Reflection而不是System.Reflection,这意味着可能会有一个带有参数的mcs编译器来定位不同的运行时.
Microsoft的编译器没有此限制,因为它不使用.NET Reflection(它是用本机代码编写的).
Rob*_*ner 13
出于同样的原因,您仍然可以使用Visual Studio 2005在.NET 2.0中进行开发.当然,您可以使用VS2010并仅使用.NET 2.0代码启动.NET 4.0项目,但有些公司担心如果升级框架/编译器版本,他们已经有了正常的工作.
仅仅因为新的编译器版本向后兼容并不意味着团队会想要升级.
拥有不同的编译器版本可确保Mono的所有用户仍然可以使用他们选择的任何编译器版本并且习以为常.
- mcs:编译器以1.1运行时为目标(使用Mono 2.8弃用).
- gmcs:用于定位2.0运行时的编译器.
- smcs:编译器以2.1运行时为目标,构建Moonlight应用程序.
- dmcs:从Mono 2.6开始,此命令是C#4.0编译器,并引用4.0运行时.
就个人而言,我喜欢随时升级,但有些公司和团队由于某种原因无法做到这一点.
| 归档时间: |
|
| 查看次数: |
7911 次 |
| 最近记录: |