There are no reviews yet. Be the first to send feedback to the community and the maintainers!
This is Moonlight, an open source implementation of Silverlight 1.0, 2.0, 3.0 and 4.0 for Unix systems. See http://www.mono-project.com/Moonlight for more information. Installation ============ For standard Unix configuration/installation instructions, see the INSTALL file. Requirements ============ At this time, Moonlight trunk (this release) requires you to use trunk to get the required dependency (e.g. latest Mono.Cecil) and compilers (e.g. the new 'mcs' compiler). To build mono, do like this: git clone git://github.com/mono/mono.git system-mono cd system-mono && ./autogen.sh && make && sudo make install Note that here we checkout mono to a different directory than below. To build Moonlight, you'll also need to get the source code for mono and mono-basic repositories from a specific revision from trunk. Do this like this: git clone git://github.com/mono/moon.git moon git clone git://github.com/mono/mono.git mono cd mono && git reset --hard f41f710 && cd .. git clone git://github.com/mono/mono-basic.git mono-basic cd mono-basic && git reset --hard 4ef1fbe && cd .. To build pixel shader support, you need to get a specific revision of the mesa repository. Do this like this: git clone git://anongit.freedesktop.org/mesa/mesa cd mesa && git reset --hard 3ed0a099c && cd .. The revision the codecs currently are at is: 15e2b1b2 (only applicable to buildbots and developers on the Moonlight team). For SVN users, the revision is: 10364 The package wnck-sharp is also required, it can be found in the gnome-desktop-sharp repository on github: https://github.com/mono/gnome-desktop-sharp Alternatively, on ubuntu/debian, the gnome-desktop-sharp2 package provides it. Compiling Mono for Moonlight ============================ Automatic Mode (recommended) =========================== This is recommended if you haven't built Mono before. This is also recommended if you have clean mono and mcs checkouts that you are going to use just for Moonlight. In this mode, you don't have to build Mono before building Moonlight, so you just do cd moon ./autogen.sh make && make install This will configure your Mono source tree with the minimum options required to build it for Moonlight. At the moment, these are: --with-moonlight=only --with-profile4=no --enable-minimal=aot,interpreter --with-ikvm-native=no --with-mcs-docs=no --disable-nls --disable-mono-debugger --with-sgen=no This Mono configuration will not be suitable for anything except Moonlight. If you want to use SGen with Moonlight, you'll need use the following option when running autogen.sh: --with-sgen=yes Warning: Moonlight+Sgen has not been fully tested yet, and is likely unstable. *Enable this at your own risk* Build only Mode (advanced) ========================== This is recommended if you have built Mono before and you would like Moonlight to use your existing Mono source tree. This is for advanced users only - make sure you know what you're doing. In this mode, Moonlight will not touch your existing Mono configuration, it will build the parts it needs. Since it doesn't do a full build of mono+mcs, it's faster than a normal mono+mcs build. Before building moon, you need to make sure your mono configuration includes the following options: --with-moonlight=yes And you need to configure mono-basic like this: --with-moonlight-yes --moonlight-sdk-path=<mono checkout>/mcs/class/lib/moonlight_raw To build moon in this mode, configure it with the following options: --with-manual-mono=build If you want to use SGen with Moonlight, you'll need to use the following option: --with-sgen=yes --with-moon-gc=sgen Warning: Moonlight+SGen has not been fully tested yet, and is likely unstable. *Enable this at your own risk* Manual Mode (really advanced) ============================= On this mode, moon will not configure or build mono, you have to do it yourself. To activate this mode, configure moon with --with-manual-mono=yes Configuration options ===================== If your mono/mcs checkout is not in the same place where you have your moon source, you can configure moon with: --with-mcs-path=/path/to/mcs If you want to use ffmpeg with Moonlight, you need at least r20911 of ffmpeg and r30099 of libswscale: svn co -r 20911 svn://svn.mplayerhq.hu/ffmpeg/trunk && cd trunk/libswscale && svn up -r 30099 Installing and Testing ====================== If you want to test your newly installed Moonlight, do this: make test-plugin This will install it into your ~/.mozilla/plugins which will let both Firefox and Chrome pick it. Profiling ========= A custom profiler is available which allows you to track which objects are being kept alive by strong GCHandles and also see the stacktrace for every gchandle that was not freed. This profiler is only built if you pass --with-object-tracking=yes to autogen and then subsequently be enabled as follows: export MOON_PROFILER=gchandle On application shutdown, right before the appdomain is freed, a GCHandle 'leak' report will be printed. This will show all the objects being retained in memory because they have a strong gchandle attached to them. If you want to see where the gchandles were allocated you just have to export the following variable. This example will print the stacktraces of all the unfreed strong gchandles for the Uri type: export GCHANDLES_FOR_TYPE=Uri If multiple strong handles are targetting the same CLR object, these will be grouped together. This makes it easy to see if 10,000 handles are targetting the same object or if its 10,000 different objects. Runtime Options =============== There are a couple of runtime-parameters that affect Moonlight behavior and turn on/off certain features. Those options are specified through the MOONLIGHT_OVERRIDES env variable. The more interesting ones are: * shapecache=yes/no Use some extra memory for caching shapes. Increases memory usage but helps with performance (off by default). The shape cache size is 6MB max. * render=ftb/btf Use front-to-back or back-to-front rendering (ftb is the default). * cache=show/hide Show the (shape) cache usage statistics. In plugin mode they're available through the right-click popup menu (hide by default). * converter=yuv/ffmpeg Use native mmx/sse2 conversion code or ffmpeg to do the yuv -> rgb colorspace conversion (by default we use the native yuv code). To launch Firefox with shape caching and ffmpeg converters use: $> MOONLIGHT_OVERRIDES="shapecache=yes,converter=ffmpeg" firefox Other options include: * ms-codecs=yes/no * ffmpeg-codecs=yes/no Controls which sets of codecs to use, the Microsoft ones or the ffmpeg ones. * timesource=manual/system Defaults to `system'. Also if --with-debug=yes option was provided to configure script, the MOONLIGHT_DEBUG env variable controls which debug output is printed on the console. Valid values are: alsa, alsa-ex, audio, audio-ex, pulse, pulse-ex, httpstreaming, markers, markers-ex, mms, mediaplayer, mediaplayer-ex, pipeline, pipeline-error, framereaderloop, ui, ffmpeg, codecs, dependencyobject, downloader, font, layout, media, mediaelement, mediaelement-ex, buffering, asf, playlist, playlist-warn, text, xaml Moonlight currently contains two ASX parsers. The default parser is a custom parser that accounts for some of ASX's oddities such as quotes in attribute strings and non case sensitive element names (ie <foo></FOO>). The older parser uses a true xml parser, so will not handle these oddities well, however it has been more heavily tested. To use the older expat based playlist parser set the env variable MOONLIGHT_USE_EXPAT_ASXPARSER=1. There are two XAML parsers available in Moonlight. An unmanaged one that is used for Silverlight 1, 2 and 3 applications and a managed one that is used for silverlight 4 (and above) applications. The parser is determined at runtime after the app manifest is read. The unmanaged parser is always used to parse the app manifest. After that the correct parser is determined based on Deployment::RuntimeVersion. You can force moonlight to use the managed parser on all sites by setting the MOON_USE_MANAGED_XAML_PARSER environment variable. You can force moonlight to use the unmanaged parser on all sites by setting the MOON_DONT_USE_MANAGED_XAML_PARSER environment variable. Licensing ========= The C and C++ code that makes up the engine is dual-licensed under the LGPL v2 license and is also available commercially for developers interested in using Moonlight on embedded systems or other systems where the end-user can not upgrade the LGPL code on his own. The C# tests in test/2.0/Microsoft.Silverlight.Testing are copyrighted by Microsoft and released by them under the open source MS-PL license. The C# controls in class/Microsoft.SilverlightControls/ and class/WPF.Toolkit are copyrighted by Microsoft and released by them under the open source MS-PL license. Technical Details ================= For implementation details and notes, see the NOTES file. Test Suite ========== To run the test suite, make sure that the output from configure indicates that the tests will be run. Once this is done, you can run the tests like this: To run the Moonlight Unit Tests: cd moon/test/2.0/moon-unit make test Firefox 3 ========= The original Silverlight.js shipped by Microsoft was incompatible with Firefox 3. We have released a greasemonkey script (data/silverlight-ff3-quirks.user.js) that will patch this behaviour for some sites.
mono
Mono open source ECMA CLI, C# and .NET implementation.SkiaSharp
SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.CppSharp
Tools and libraries to glue C/C++ APIs to high-level languagesmonodevelop
MonoDevelop is a cross platform .NET IDExwt
A cross-platform UI toolkit for creating desktop applications with .NET and Monotaglib-sharp
Library for reading and writing metadata in media filesEmbeddinator-4000
Tools to turn .NET libraries into native libraries that can be consumed on Android, iOS, Mac, Linux and other platforms.VulkanSharp
Open source .NET binding for the Vulkan APICocosSharp
CocosSharp is a C# implementation of the Cocos2D and Cocos3D APIs that runs on any platform where MonoGame runs.monotouch-bindings
A collection of third party bindings for MonoTouchgtk-sharp
Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Monot4
T4 text templating enginesharpen
Sharpen is an Eclipse plugin created by db4o that allows you to convert your Java project into c#website
Mono's web site.libgdiplus
C-based implementation of the GDI+ APIngit
Automated jgit port to c#monomac
Bindings to create MacOS X applications with Mono.LineEditor
LineEditor is an interactive line editor for Command Line applications in .NETSkiaSharp.Extended
SkiaSharp is a cross-platform, comprehensive 2D graphics API for all .NET platforms. And, here is where you will find all sorts of extras that you can use with it.cxxi
C++ interop frameworkxsp
Mono's ASP.NET hosting server. This module includes an Apache Module, a FastCGI module that can be hooked to other web servers as well as a standalone server used for testing (similar to Microsoft's Cassini)roslyn
Roslyn Compiler - Tracks Mono Patchesdocker
Docker images, for the Docker container systemmono-tools
The mono-tools package contains a series of extra tools for Mono users.mono-addins
Mono.Addins is a generic framework for creating extensible applications, and for creating add-ins which extend those applications.mono-curses
Mono/.NET bindings to the Unix Curses as well as GUI framework for creating text applications with Curseswinforms
Winforms samples for use with Mono's implementation of System.Windows.Formsaspnetwebstack
Mono branch of Microsoft's ASP.NET WebStacksdb
A command line client for the Mono soft debugger.opentk
OpenTK is a set of bindings to OpenGL, OpenCL and OpenAL. This is not the main repository, just a temporary import to allow Mono developers to make changes to this module. Please do not contribute changes here, contribute them to the upstream maintainers at http://www.opentk.comcocos-sharp-samples
CocosSharp samplesikvm-fork
A fork of the original cvs based IKVM repositorymono-basic
Visual Basic Compiler and RuntimeTsToCSharp
Emit C# strongly typed interface code from TypeScript definition files.mono-upnp
UPNP binding for Mono/.NETdebugger-libs
Debugger librariesmd-website
MonoDevelop WebSitedbus-sharp
DBus Sharpapi-doc-tools
.NET Reference API Toolchainwebkit-sharp
C#/CLI bindings to WebKit/Gtk+sysdrawing-coregraphics
System.Drawing implementation using CoreGraphics.maccore
MacCore contains the shared code between MonoTouch and MonoMacMono.Zeroconf
Cross platform ZeroConf client that works with the underlying ZeroConf stack on the platform for Mono and .NETmwf-designer
Windows.Forms designer for Mono. Work in progressheap-shot
cecil-old
ECMA CIL Manipulation Librarymono.posix
POSIX/Unix interface for Mono, .NET and .NET Core. Provides functionality for managed code to access POSIX/Unix features not accessible via the BCL. This repository supersedes the older code in https://github.com/mono/monotao
The Tao OpenGL, OpenAL, GLU, FreeGlut bindings for .NET and Monomonodroid-bindings
Mono for Android Jar Bindingsentityframework
monkeywrench
Continuous build system used by Mono and Moonlight.linux-packaging-mono
Packaging metadata for mono-project.com packagesreference-assemblies
Binary reference assembliesmod_mono
Apache module to host the XSP ASP.NET hostjurassic
Mono port of the Jurassic JS Engine (http://jurassic.codeplex.com/).mono-tls
New TLS implementation for Mono.bockbuild
Build & packaging system, responsible for the Mono project distribution for Macxamarin-gtk-theme
linux-packaging-msbuild
SkiaSharp-API-docs
SkiaSharp and HarfBuzzSharp API reference docsuia2atk
Accessibility bridge between UIA and Gnome's ATKcsvorbis
mono-webbrowser
Browser backends for Mono.WebBrowsermoma
Mono Migration Analyzer. A tool to scan compiled assemblies and determine their compatibility with Mono.olive
Olive is an incubation module used to host new Mono code under development based on Microsoft's APIs. Olive code eventually graduates and is moved into the Mono distribution.monocov
Mono Code Coverage profiler moduledebugger
Mono Hard Debuggermonodevelop-flatpak
gtk-sharp-ribbon
guiunit
A unit test runner which interoperates with any Gui main looprepo
This is the mono repo - we'll put everything heremonologue
Monologue is Mono's blog aggregation software for the Mono communitygir-sharp
C# binding generator for GIR formatlb
Lame Blog, the lamest blog engine in the worldWindowsAPICodePack
WindowsAPICodePack as imported from MonoDevelopgluezilla
roslyn-binaries
Pre-built binaries of Roslynstetic
The Gtk# GUI designerpty-sharp
API for managing Unix pseudo-terminals from managed codemono-microthreads
Microthreads implementation built on top of Mono.Tasklets librarygnome-keyring-sharp
Bindings to Gnome's KeyRing APIsnuget-binary
Temporary repo to hold nuget binaries for use with MonoDevelopwinforms-tools
Open source Windows.Forms tools.old-code
Old mono code that has not been developed in yearsgio-sharp
Bindings to Glib's libgiognome-sharp
Bindings to the core Gnome APIscrimson
mooncodecs
open source codecs that can be plugged into Moonlight or Silverlight applicationsrocks
Mono.Rocks is a library of utility functionsrelease
(Deprecated, no longer used) Tools to manage Mono's releases (scripts, web pages, build files)WebAssembly.JSInterop
WebAssembly JSInterop librarylinux-packaging-fsharp
Packaging metadata for mono-project.com packagesnuget
Nugetmonohotdraw
Vector drawing programdbus-sharp-glib
Managed dbusMono.Simd.Math
Math library that uses Mono's accelerated Mono.Simd libraryeglib
heap-buddy
boringssl
Custom version of Boring SSL used by Monogoogle-sharp
Love Open Source and this site? Check out how you can help us