Welcome to mirror list, hosted at ThFree Co, Russian Federation.

README « scripts « msvc - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e73eab7fc0b09ee6bd5479406d0427f15a0af8f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
README					Last updated: 2013-01-09

Visual Studio Build Setup for Mono's Managed Code
=================================================

The scripts in this directory are used to create the various .csproj
for each one of the modules in Mono.  To avoid accidentally making
changes on the Makefile system that is not reflected on the csproj
system, the .csproj files are generated from the actual Makefile
settings.

This requires a couple of steps: 

	* Extract the order, compiler and compilation flags for all
	  managed code in Mono on Linux by using the existing Makefile
	  system.

	* Generate csproj files from the previous step

The idea is to ensure that we do not miss any compilation flag,
define, resource, reference, icon or any other element that might be
necessary to build the Mono class libraries.

* Extracting the Compilation Metadata

	The first step is to extract the compilation metadata from the
	existing Makefiles.  This is done in stages, first a fully
	working Mono compilation setup is required, and second the data
	is extracted.

	The extraction is done like this, from the toplevel Mono
	directory run:

		  make update-csproj

	With this input, it is possible to generate an XML file, to do
	this do:

		  make package-inputs

	This will generate order.xml, this contains the ordered list in
	which directories must be compiled as well as the command line
	options used to build it.

* Generate .csproj and .sln files

	Run the genproj.exe executable in this directory.

	   On Windows:
		cd msvc/scripts/
		/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe genproj.csproj
		./genproj.exe

   	   On Mac:
		cd msvc/scripts/
		make genproj.exe
		mono genproj.exe
		
	One output of genproj is the solutions for the successive profiles, 
	like net_4_x.sln.

	The command
		./genproj.exe -h 
	lists a couple of options, notably to limit the scope of 
	the output solutions for each profiles to System*.dll assemblies 
	and dependencies.

* Compiling from Visual Studio

	Before you try to compile from Visual Studio, you are *strongly* 
	advised to set the maximum number of parallel project builds 
	to 1 (Tools -> Options -> Projects and Solutions -> Build and Run)
	Due to the iterative building process for some of Mono's 
	assemblies, there can be clashes writing to /obj/Debug for 
	some projects

* KNOWN ISSUES

	* We are currently not running "sn" to sign the assemblies
	
	* We do not have an "install" target, perhaps we should generate
	this based on something similar to the update-csproj setup

	* Audit: every Makefile for "local" changes, as those are not
        visible to this tool.

* OLD KNOWN ISSUES

	* Many assemblies still fail to compile, due to missing project 
	references output by genproj, or other issues yet to determine
	
	* The first build of a solution may have a large number of 
	failing compilations, more than subsequent solution Builds
	
	* The .NET 2.0 profile assemblies end up targetting the 
	v4.0 runtime, even when requesting 2.0 in the csproj file
	(http://social.msdn.microsoft.com/Forums/en-US/msbuild/
	thread/6c9cd0e1-7fb8-480a-b006-f034b5926e03)