Пока это только мысль, но мне интересно, насколько сложно было бы использовать Mono Compiler или написать новый, все еще выводя Windows EXE?
Причина этой мысли в том, что я вижу, как люди творчески "злоупотребляют" языком C #, чтобы получить такие вещи, как контракты кода или аспектно-ориентированное программирование, и запускать их, и иногда кажется, что люди слишком сильно растягиваются.
Хорошая вещь в .net заключается в том, что в конце все, что нам нужно, это действительный IL для .net 2.0 CLR. Однако компилятор Microsoft C # закрыт и не может быть расширен. Смешивание разных языков возможно только в разных сборках.
Смысл (предупреждение: может показаться ужасным) состоит в том, чтобы использовать компилятор, который может быть расширен, и запускать его как своего рода препроцессор. Таким образом, было бы возможно добавить новые ключевые слова и языковые концепции, в то же время возвращая действительный IL.
Очевидным недостатком является, конечно, то, что а) это уже не C #, а C # -приятие, которое никто не понимает, б) писать компилятор сложно, поскольку нужно соблюдать бесчисленные правила для поддержания высокого качества и логического синтаксиса.
Но, как уже было сказано, это пока только мысль. Это немного то же направление, что и Mono.Cecil, но совершенно другой подход.