Setting Up a C# Development Environment

This page shows how to compile and install the Enlightenment Foundation Libraries (EFL) with C# bindings support, and explains how to build and run applications using them.

NOTE Some C# classes are currently in BETA state
They should only be used for experimenting and NOT for any product development.
These classes are marked as BETA in the reference documentation.



On Linux

You need a compatible version of Mono (5.0 or higher).

NOTE: Currently the C# bindings do NOT work with Mono 4.x.

The paths to the mcs compiler and to the mono application must be in the PATH environment variable before compiling.

On Windows

In order to have EFL on a Windows environment we highly recommend following this guide which accomplishes that using MSYS2 and ewpi.

You need a compatible version of Mono (5.0 or higher). It suffices to install it with pacman in the MSYS2 environment:

pacman -S mingw-w64-x86_64-mono

Now you can use the MSYS2 console to compile, install and run EFL and your applications.

Compiling and Installing EFL With C# Support

In order to compile and install EFL with C# binding support, on both Windows and Linux, just compile the EFL like the respective guides explain, and add the argument --enable-csharp-bindings to the or configure command:

./ --enable-csharp-bindings #other arguments
make -j4
sudo make install

NOTE: It is known that some portions of the code (typically the examples) can get a bit outdated from time to time, causing the building process to fail. The leading cause for this is a missing dependency. Usually, reading the error message and installing the missing package solves the problem. If you cannot solve the problem by yourself, try contacting the community.

NOTE If you are using Visual Studio to write EFL C# applications, you should copy to the build directory or have them in the PATH environment libraries: libeflcustomexportsmono.dll, libefl_mono.dll and if you want to use Intellisense also libefl_mono.xml. These libraries and XML file will be found at lib sub-directory of the prefix you install the library.

Building EFL C# Applications

With EFL installed, you can compile EFL applications using pkg-config to get the proper flags to use the C# bindings:

mcs your_app.cs -out:your_app.exe `pkg-config --libs efl-mono`

Otherwise, you have to manually point the compiler to the location of the EFL C# bindings library libefl_mono.dll, like this:

mcs your_app.cs -out:your_app.exe -r:/home/my_user/efl/build/src/lib/efl_mono/libefl_mono.dll

Running EFL C# Applications

To run your application you can either copy the EFL C# bindings library libefl_mono.dll to your application folder or set the MONO_PATH environment variable and then execute it using mono. In both cases, you can use pkg-config to get the right paths.

Example copying the library:

cp `pkg-config --variable=Libraries efl-mono` .
mono button_example_00.exe

Example setting MONO_PATH:

export MONO_PATH=`pkg-config --variable=assemblies_dir efl-mono`
mono button_example_00.exe

Note that if you installed EFL in a path that is not directly accessible to pkg-config or to your application you have to manually make it accessible somehow, for example, setting proper environment variables before compiling and running:

export PKG_CONFIG_PATH=/opt/my_install_prefix/lib/pkgconfig
export LD_LIBRARY_PATH=/opt/my_install_prefix/lib

Try the Hello World tutorial now to verify that everything works as expected.