Portable.NET
Portable.NET es una suite de herramientas de software libre para compilar y ejecutar aplicaciones para la Common Language Infrastructure, más conocida como .NET.
La plataforma inicial para la que se desarrolló fue GNU/Linux, pero DotGNU Portable.NET funciona también bajo Windows, NetBSD, FreeBSD, Solaris, y Mac OS X, entre otros. Además corre en una gran variedad de arquitecturas: x86, PPC, ARM, Sparc, s390, Alpha, ia-64, y PARISC.
DotGNU Portable.NET busca la compatibilidad con las especificaciones ECMA-334 y ECMA-335 para C# y CLI, y con la implementación comercial.NET de Microsoft. El principal objetivo es facilitar el desarrollo de aplicaciones portables que funcionen tanto en la plataforma DotGNU Portable.NET como en Microsoft.NET.
El proyecto Portable.NET tiene muchas semejanzas con el proyecto Mono de Novell. Ambos intentan proporcionar una alternativa a la tecnología.NET desarrollando una implementación libre del marco de aplicaciones y servicios.NET de Microsoft.
Componentes
Los componentes principales de la suite son: treecc, pnet, pnetlib, a los que se suman los siguientes componentes opcionales: pnetc, ml-pnet y cscctest
pnet
contiene el entorno de ejecución, el compilador de C# y otras herramientas de desarrollo.
pnetlib
Contiene las bibliotecas principales de C#, incluyendo: mscorlib, System, System.Xml, System.Drawing, System.Windows.Forms, etc.
TreeCC
Herramienta de programación complementaria de Flex y Bison utilizada para ayudar en el desarrollo del compilador de portable.net, cscc.
pnetC
Es la biblioteca para el compilador de C basada en glibc.
ml-pnet
Algunas de las bibliotecas de mono son utilizadas junto con scripts de DotGNU que permiten utilizarlas con las herramientas de DotGNU.
Como ejecutar programas en MSIL
Usando el comando ilrun seguido del nombre del ejecutable, con o sin la extensión del mismo.
ilrun puede ser registrado con el kernel de Linux de la siguiente manera ilrun: --register, esto permite correr el programa sin necesidad de teclear ilrun cada vez. ilrun puede ser desregistrado de la siguiente manera: ilrun --unregister