README for VisualStudio.NET users

Gendarme includes a two VS.NET solutions.

1. gendarme.sln

This solution is compatible with MonoDevelop and includes the projects
needed to build/test Gendarme on Linux.

2. gendarme-win.sln

This solution include projects to compile Mono.Cecil.Pdb (along with 
Mono.Cecil.Mdb) and to build the win32 (wix) installer. Otherwise it's
identical to gendarme.sln. USE THIS FILE FOR VS.NET


\/\/\/ DISCLAIMER \/\/\/

This is NOT the main build tool used for Gendarme development (autofu +
Makefiles are). So it's likely that the solution and projects will 
sometimes be out of sync and not usable without some changes [1].

These are unsupported, for your convenience, files. Use at your own risk!

/\/\/\ DISCLAIMER /\/\/\


Requirements

The minimal requirements are:

* Microsoft Visual Studio.NET 2010 [2];
* Some modules from github
	* 'jbevain/cecil' to get both Mono.Cecil and Mono.Cecil.[M|P]db
	* 'mono/mono-tools' for Gendarme latest sources


How To

* Check out the source code from GIT. This is:

	git clone git://github.com/mono/mono-tools.git
	git clone git://github.com/jbevain/cecil.git
	(Please clone both modules at the same level in the folder
	hierarchy because mono-tools references cecil as a relative path.)

* Optionally, install WIX [3] if you want to build the setup. If not 
installed you will get some errors when opening the solution or doing a
"Rebuild Solution" operation - but everything else will be fine.

* Open the gendarme-win.sln solution inside VS.NET 2010

* Build, execute, enjoy!


Self-test

Running Gendarme on Gendarme is something very important for (existing 
and would be) contributors. On Linux this is done by executing 
"make self-test" in a terminal. As a general rule the report should
find no (zero) defect - i.e. all known defects should have (documented)
ignore entries.

The same "self-test" can be done using Visual Studio [4] by adding the 
following lines in the 'gendarme's project Properties, Debug tab as the
"Command line arguments"

	--config ../../../rules/rules.xml --set self-test 
	--xml ../../../self-test.xml --html ../../../self-test.html 
	--ignore=../../../self-test.ignore --severity=all 
	--confidence=all gendarme.exe GendarmeWizard.exe Gendarme.*.dll

Make sure you have (re)built the whole solution in "Release" (not Debug)
before executing the gendarme project - otherwise you'll have a report
with hundreds of false positives (since CSC generates pretty bad code
without optimizations).

Once executed start your web browser and open the self-test.html file
that was generated on the root directory of your gendarme solution.


Notes

[1] Please report such issues and they will, eventually, be fixed when
someone gets to work with VS.NET. Remember this is not the primary 
development platform for Gendarme.

[2] Older version won't work since Gendarme uses C# 4 features.

[3] Windows Installer XML Toolset 3.5
http://wix.codeplex.com/releases/view/60102

[4] This cannot be committed in GIT since this setting is kept in the
gendarme.csproj.user file

