2011-12-29 17 views
2

C#の構文をネイティブコード(または多分C++?)にコンパイルするオプションを探しています。私は公式に言語の一部であるすべてのライブラリを持つことに興味はありません。ちょうど私のC++プログラムを書くのと同じプログラムを書くことができますが、部分クラス、プロパティ、ラムダ、ジェネリックなどの言語構造を使用します。C#(言語のみ)コンパイラ

  1. このようなことはありますか?
  2. そういうことがあっても、あるいはC#の基本的なことを誤解していますか?
+3

C#仕様を読んだ場合、一部の言語機能がBCLに関連付けられています。それらを完全に分離することはできません(例えば、 'IDisposable'と' using'ステートメント)。 – Oded

+0

はどのプラットフォームですか? –

+0

C#は中間言語にコンパイルされ、.NET仮想マシンによって実行されます。ライブラリの「言語の一部」はありません.Netによって提供されるライブラリはBCL/FCLの一部であり、ISOによって標準化されています。 – knittl

答えて

6

おそらくあなたが望むものに最も近いものはVala programming languageです。 これはC#に大きな影響を受け、Cにコンパイルされ、従来のCコンパイラによってコンパイルされます。

あなたが言っているように部分的なクラス、プロパティ、ラムダ、ジェネリックなどがありますが、C#ではありません。

また、ILをマシンコードに変換するIL2CPUもチェックしてください。おそらく、.NETアセンブリで使用できます。

+1

Re:IL2CPUでは、モノラルランタイム( 'mkbundle'または' mono -aot')を使用して、CLRやランタイムに依存しないネイティブイメージにプリコンパイルすることができます。 – sehe

0

おそらく

NGen.exe

see

+0

これはバイトコードをあらかじめコンパイルするだけです。フレームワークなしで実行できるスタンドアロンの.exeは作成されません。 – baruch

+0

@baruch - なぜフレームワークを必要としないC#コードを記述しますか?その時点でC/C++を使用してください。 –

+0

@Ramhound言語には多くの便利な機能があるので、私はその質問のうちのいくつかを挙げました。 – baruch

0

標準のcsc.exeコンパイラは、BCLを使用せずにコンパイルできます。 /nostdlibスイッチのためのリファレンスを参照してください。一部でhttp://msdn.microsoft.com/en-us/library/fa13yay7.aspx

を、それは言う:

「あなた自身のSystem名前空間とオブジェクトを定義したり、作成したい場合は、このオプションを使用します。」

たとえば、Silverlightプロジェクトではこれが使用されます。

関連する問題