Compiling Mono VSNET
From Mono
SVN now includes a Visual Studio .NET 2005 solution mono.sln in the mono/msvc directory (http://anonsvn.mono-project.com/viewvc/trunk/mono/msvc/), , and some projects files to build most of the unmanaged parts in Mono.
The mono.sln solution file contains the VC projects files for:
- Embedded Samples
- test-invoke.vcproj
- test-metadata.vcproj
- teste.vcproj
- Libraries
- libgc.vcproj
- libmono.vcproj
- eglib.vcproj
- Tools
- genmdesc.vcproj
- monoburg.vcproj
- monodiet.vcproj
- monodis.vcproj
- monograph.vcproj
- pedump.vcproj
- mono.vcproj
| Table of contents |
Requirements
1. Visual Studio .NET 2005. Previous Visual Studio versions may work or requires, hopefully minimal, changes.
Optional
1. A working (i.e. where you could successfully build mono) cygwin (http://www.cygwin.com/) setup! This is required to:
- build the class libraries; and
- test for regressions.
Required Local Changes
All required libraries for building mono in Visual Studio are referenced via the MONO_DEPENDENCIES_PREFIX environment variable. Set this variable to a previous installed mono (C:\Mono-1.2.5.2 for example), or to a cygwin environment setup for building mono (D:\cygwin\opt for example).
Each executed assembly (i.e. the EXE) must be able to find a working mscorlib.dll (and all the other required assemblies). This can be done in different ways. My preference is to use the project properties pages in the Configuration Properties\Debugging\Environment options and set MONO_PATH to the class libraries directory build by cygwin (local) or on Linux (remote). E.g.
- MONO_PATH=z:\svn\mcs\class\lib\default\ allows me to use the class libs build under Linux; while
- MONO_PATH=C:\cygwin\opt\mono\lib\mono\1.0 use the one built from cygwin (after a make install)
Building
Once everything is installed (and edited) you can right-click on the mono solution (in the Solution Explorer), select Clean Solution (for the first time) then Build Solution.
Known Issues
1. Most, BUT NOT ALL, the regressions tests pass under this build. The failures seems limited to some mathematical differences and to code relying on the stack walking functions. The hacks to replace the GCC functions (__builtin_frame_address and __builtin_return_address) are incomplete;
2. The solution doesn't provide complete (i.e. from scratch) build. It requires a working cygwin environment to create some files (e.g. via genmdesc, monoburg). This isn't so bad as without cygwin you wouldn't be able to test Mono properly;
3. Only the Debug target is configured properly (that would be easy to fix, but would require turning off some optimizations like omitting stack frames). Anyway there are other issues [1] to fix before switching to Release and IMHO the biggest advantage to VS.NET is it's debugger/debugging tools;
4. The C compiler emits _lots_ of warning during compilation. Some warnings have been turned off for some projects (there was so much that it slowed down compilation). You can bring them back (or hide more of them) using the project properties pages windows, Configuration Properties\C/C++\Advanced\Disable Specific Warnings;
5. Visual Studio 2005 should have all the latest header files required, but if not (or if you're using an older version of VS) then install MS Platform SDK (Windows Server 2003 is the latest) to ensure you have the latest Windows header files. You can download it from: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
6. Not everyone has VS.NET so it is possible you may have to add some (new) files to the build from time to time. Please report such issues on the mailing list.
7. Probably a lot more I didn't discover... or has changed since.
More informations
Please email <mono-devel-list@lists.ximian.com> if you have any problem and/or if there's something wrong or missing in the instructions.
An offline version of this document is available in SVN /mono/README.vsnet file.

Powered by MediaWiki