README.vsnet: Updated VS.NET build instructions.
[mono.git] / README.vsnet
1 README.vsnet                                    Last updated: 2006-02-01
2
3
4 SVN includes a Visual Studio .NET 2005 solution, mono.sln, and some 
5 projects files to build most of the unmanaged parts in Mono.
6
7 The "mono.sln" solution file contains the VC projects files for:
8
9         * Embedded Samples
10                 * test-invoke.vcproj
11                 * test-metadata.vcproj
12                 * teste.vcproj
13         * Libraries
14                 * libgc.vcproj
15                 * libmono.vcproj
16         * Tools
17                 * genmdesc.vcproj
18                 * monoburg.vcproj
19                 * monodiet.vcproj
20                 * monodis.vcproj
21                 * monograph.vcproj
22                 * pedump.vcproj
23         * mono.vcproj
24         
25
26 REQUIREMENTS
27
28 * A working cygwin (http://www.cygwin.com/) setup! This is required to:
29         * generate some files (via monoburg and genmdesc);
30         * build the class libraries; and
31         * test for regressions.
32
33 * Visual Studio .NET 2005. Previous Visual Studio versions may work or 
34 requires, hopefully minimal, changes.
35         
36 * VSDependencies.zip must be decompressed under the /mono/ directory 
37 (otherwise you will need to edit all the projects files). This file can 
38 be downloaded from http://www.go-mono.com/archive/VSDependencies.zip
39
40
41 LOCAL CHANGES
42
43 Sadly solution/projects files aren't easy to move from computers to
44 computers (well unless everyone follow the same naming convention) so
45 you'll likely have to changes some options in order to compile the
46 solution.
47
48         * each executed assembly (i.e. the EXE) must be able to find a
49         working mscorlib.dll (and all the other required assemblies).
50         This can be done in different ways. My preference is to use the
51         project "properties pages" in the "Configuration Properties
52         \Debugging\Environment" options and set MONO_PATH to the class
53         libraries directory build by cygwin (local) or on Linux
54         (remote).
55         
56         e.g. MONO_PATH=z:\svn\mcs\class\lib\default\
57         allows me to use the class libs build under Linux, while
58         MONO_PATH=C:\cygwin\opt\mono\lib\mono\1.0
59         use the one built from cygwin (after a make install)
60
61 Some useful informations to adapt the solution/project files...
62
63         * My cygwin root dir is:        c:\cygwin\
64         * My username is:               poupou
65         * My mono install prefix is:    /opt/mono
66                 
67
68 BUILDING
69
70 Once everything is installed (and edited) you can right-click on the
71 "mono" solution (in the "Solution Explorer"), select "Clean
72 Solution" (for the first time) then "Build Solution".
73
74
75 KNOWN ISSUES
76
77 [1] Most, BUT NOT ALL, the regressions tests pass under this build. The
78 failures seems limited to some mathematical differences and to code
79 relying on the stack walking functions. The hacks to replace the GCC
80 functions (__builtin_frame_address and __builtin_return_address) are
81 incomplete;
82
83 [2] The solution doesn't provide complete (i.e. from scratch) build. It
84 requires a working cygwin environment to create some files (e.g. via
85 genmdesc, monoburg). This isn't so bad as without cygwin you wouldn't be
86 able to test Mono properly (see REQUIREMENTS);
87
88 [3] Only the Debug target is configured properly (that would be easy to 
89 fix, but would require turning off some optimizations like omitting 
90 stack frames). Anyway there are other issues [1] to fix before switching
91 to Release and IMHO the _biggest_ advantage to VS.NET is it's debugger/
92 debugging tools;
93
94 [4] The C compiler emits _lots_ of warning during compilation. Some
95 warnings have been turned off for some projects (there was so much that
96 it slowed down compilation). You can bring them back (or hide more of
97 them) using the project "properties pages" windows, "Configuration
98 Properties\C/C++\Advanced\Disable Specific Warnings";
99
100 [5] Visual Studio 2005 should have all the latest header files required, 
101 but if not (or if you're using an older version of VS) then install MS 
102 Platform SDK (Windows Server 2003 is the latest) to ensure you have the 
103 latest Windows header files. You can download it from:
104 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
105
106 [6] Not everyone has VS.NET so it is possible you may have to add some
107 (new) files to the build from time to time. See "more informations" for
108 reporting those changes.
109
110 [7] Probably a lot more I didn't discover... or has changed since.
111
112
113 MORE INFORMATIONS
114
115 Please email <mono-devel-list@lists.ximian.com> if you have any problem
116 and/or if there's something wrong/missing in the instructions.
117
118 An online version of this file is available at
119 http://www.mono-project.com/Mono:Windows