Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Jun 14, 2023. It is now read-only.
Richard Cook edited this page Oct 26, 2010 · 7 revisions

The Mono C# Extensibility Project

This page is an overview of the purpose of this project and its requirements.

Why did I do this?

This work was originally prompted by a discussion I started at [[Stack Overflow|http://stackoverflow.com/questions/3848001/extending-the-mono-c-compiler-is-there-any-documentation-or-precedent]]. It seems that extensibility of the Mono C# compiler is not supported natively. Therefore, I decided to add it in myself. This requirement is driven by the needs of another project I'm working on (there will be more information about this shortly) and, thus, I intend to develop the bits in parallel. This project is very much in its infancy.

Requirements

I need to be able to access the abstract representation of a C# program immediately after the parsing stage has succeeded but before the type checker kicks in. More than just this, I need to be able to modify the types assigned to various program features such as method parameters etc. This change implement a very simple extensibility model that provides me with the minimum functionality to perform these types of actions. I expect that this programming model will grow and change considerably over time as I build by compiler add-in out.

Since the compiler [[dmcs.exe|dmcs]] now exposes a public extensibility API that is intended to be consumed by third-party add-ins, the target assembly must now have a strong name in order that other signed assemblies can reference it. The project has been modified to reference the standard [[mono.pub|http://github.com/rcook/mono-extensibility/blob/master/mcs/class/mono.pub]] key file.

Getting started

Clone this wiki locally