+.TP
+.I "XBUILD_FRAMEWORK_FOLDERS_PATH"
+With ToolsVersion 4.0, projects can target arbitrary frameworks referenced by TargetFrameworkMoniker,
+which is of the format:
+
+ Identifier,Version=<version>[,Profile=<profile>]
+
+Eg. ".NETFramework,Version=v4.0"
+
+The 3 parts of the moniker are given by the msbuild properties:
+
+ $(TargetFrameworkIdentifier), $(TargetFrameworkVersion) and $(TargetFrameworkProfile)
+
+This moniker maps to a framework description file on disk:
+
+ <framework_root>/Identifier/Version/[Profile]/RedistList/FrameworkList.xml
+
+This file is used to determine the path where to find the framework assemblies for this particular framework.
+
+Framework root here is configurable and is resolved in the following order:
+
+.nf
+ 1. Paths specified in the environment variable $XBUILD_FRAMEWORK_FOLDERS_PATH
+ 2. /Library/Frameworks/Mono.framework/External/xbuild-frameworks on Mac OSX.
+ 3. MSBuild property $(TargetFrameworkRoot)
+ 4. $prefix/lib/mono/xbuild-frameworks (default location)
+.fi
+
+XBuild tries the paths given above, in order, till it finds a FrameworkList.xml for the moniker.
+Running with /v:detailed or higher verbosity will show the various paths that it tries.
+
+The FrameworkList.xml itself just has a root element like:
+
+ <FileList Name=".NET Framework 3.5" TargetFrameworkDirectory="..\\..\\..\\..\\3.5" IncludeFramework="v3.0">
+ </FileList>
+
+Here the TargetFrameworkDirectory attribute specifies the directory where the assemblies for
+this particular framework can be found. If this is not set, then the parent of the folder
+containing the xml file is taken as the framework directory.
+
+IncludeFramework attribute specifies the version of a framework (under the *same* $(TargetFrameworkIdentifier))
+which should be included in the final list of Target framework directories.
+