2011-12-29 65 views
2

我正在寻找一个选项来将C#语法编译为本机代码(或者可能是C++?)。我对所有正式属于该语言的库都不感兴趣,只是能够编写与编写我的C++程序相同的程序,但使用语言结构,例如部分类,属性,lambdas,泛型等。C#(仅限语言)编译器

  1. 有没有这样的事情?
  2. 如果没有,这样的事情甚至是可能的,还是我误解了C#的基本知识?
+3

如果您阅读C#规范,则某些语言功能会绑定到BCL。你不能完全解耦它们(比如'IDisposable'和'using'语句)。 – Oded 2011-12-29 13:53:11

+0

为什么平台? – 2011-12-29 13:53:16

+0

C#编译为中间语言,然后由.NET虚拟机执行。没有库是'语言的一部分',由.NET提供的库是BCL/FCL的一部分,并由ISO进行标准化。 – knittl 2011-12-29 13:54:22

回答

6

可能是最接近你想要什么Vala programming language。它深受C#的启发并编译为C,然后由C编译器编译。

正如你所说,它具有部分类,属性,lambdas,泛型等,但它不是C#。

还检查出IL2CPU它将IL转换为机器码。也许它可以在.NET程序集上使用。

+1

Re:IL2CPU,您可以使用单声道运行时('mkbundle'或'mono --aot')预编译为不依赖于CLR或运行时的本机映像。 – sehe 2012-05-21 06:53:21

0

也许

NGen.exe

see

+0

这只是预编译的字节码。它不会创建可以在没有框架的情况下运行的独立.exe。 – baruch 2011-12-29 14:45:39

+0

@baruch - 你为什么要编写不需要框架的C#代码。只需使用C/C++即可。 – 2011-12-29 15:15:09

+0

@Rhhound由于该语言有许多有用的功能。我在问题中列出了其中的一些。 – baruch 2011-12-29 16:06:18

0

标准csc​​.exe编译器可以在不使用BCL的情况下进行编译。请参阅/nostdlib开关参考:http://msdn.microsoft.com/en-us/library/fa13yay7.aspx

在某种程度上,它说:

“如果要定义或创建自己的系统命名空间和对象使用此选项。”例如,Silverlight项目使用这个。