= How to compile and run HeuristicLab with Mono = == Prerequisites == - A Linux operating system. - A recent build (after September 2012) of Mono including Mono Tools. I'm using the script from [https://github.com/firegrass/mono-installer-script] for compiling the Mono master, but everything > version 3.0 should work. - System.Windows.Forms.DataVisualization.dll. HeuristicLab uses this assembly from the .NET 4 framework for it's charts. This library is only incompletely implemented in Mono so you need access to the GAC from a Windows operating system and copy this assembly. == Compiling HeuristicLab == - Check out the HeuristicLab sources (check the [[Documentation/DevelopmentCenter/DownloadAndBuildSource|DevelopmentCenter]] for more information on how to check out our sources). - In the sources directory, open the {{{ prepareProjectsForMono.sh }}} file and adapt the path to the DataVisualization assembly. - Run {{{chmod +x prepareProjectsForMono.sh }}} and {{{./prepareProjectsForMono.sh }}}. This file changes some of the project files so that they work with Mono. - Optional: If you are using the mono installer script from firegrass, switch to the mono environment with {{{. mono-master-environment}}}. - Run {{{xbuild HeuristicLab.ExtLibs.sln }}} and afterwards {{{xbuild "HeuristicLab 3.3.sln" }}}. We only support building HeuristicLab with xbuild at the moment because MonoDevelop doesn't handle Pre- and Postbuild events in Visual Studio project files correctly. - You can now switch to the {{{ bin }}} directory and run {{{ mono "HeuristicLab 3.3.exe" }}}. == What's missing and what does not work == - External evaluation problem: We use Google Protocol Buffers for communication with external applications. Because Mono is not able to compile protobuf-2.4.1, external evaluation is currently not supported on Linux. - Docking UI: The UI library that we use for docking windows in HeuristicLab does not work properly on Linux. Therefore the UI on Linux is the Multiple Documents UI. - Extensive testing. As of this date (July 2013) the main efforts so far were to get HeuristicLab to compile with Mono and to get it to a state where algorithms can be executed. There has been no extensive testing and we know that there are still some bugs in Mono's WinForms implementation that sometimes leads to strange behavior (graphical glitches, etc...) or crashes. We have already fixed some of these bugs in Mono and will continue in doing so. - MacOS X support: WinForms support on MacOS X seems to be more broken than on Linux. Despite some effort, we didn't get HL to run on MacOS X. - Convert into user-defined algorithm does not work. - The boxplot charts do not work. - ProgrammableOperator (actually the view with the code editor) does not work. - Scripting == Tested System Configurations == - Mono 4.2.1.0 on Ubuntu 16.04 and Linux Mint 18.3 - Mono 4.6.2.0 on Debian 9.3 - Mono 4.6.2.7 on Ubuntu 17.10 == Feedback == If you have tried out HeuristicLab with Mono and have any feedback, comments or questions please let us know and write a mail to our [wiki:Support Google Group].