<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:664362082;
        mso-list-type:hybrid;
        mso-list-template-ids:2094972528 -679176208 201916419 201916421 201916417 201916419 201916421 201916417 201916419 201916421;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l1
        {mso-list-id:1548950175;
        mso-list-template-ids:-236145498;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-AU" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Marcello,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I cannot provide knowledge on xbuld/msbuild as such but can give some background on the .csproj files.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I worked on the csproj file generation 1-2 years ago, and introduced the multiple csproj files with the profile as extension. The idea is to aim for solutions
 that should “just build” as they are under visual studio or monodevelop. Prior to that if my memory serves me right, the “build” process was generating successive versions of the framework libraries, and swapping libraries, and you’d need differing compilation
 flags and conditional cs file includes in csproj files etc. depending on the profile. Intellisense was going topsy-turvy, too. I reckon that multiple csproj is just plain simpler.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I mostly focussed on trying to get a working build process with VS of the System.*.dll libraries for .net 4.5; I could things to build OK though with a few
 passes. There is an unfortunate wart in the Microsoft compilation toolchain (admittedly would only ever show for one Mono assembly) to work around in profile 2.0.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Regarding specifically what you asked:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">The availability of Microsoft.Build.Engine.csproj and xbuild.sln _<i>may</i><i>_</i> be a legacy (last commit from 2009); (Jonathan Chambers may want
 to comment on this)<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I _<i>think</i>_ that in theory the Microsoft.Build.Engine-net_[2_0,3_5,4_0,4_5]. should reflect the conditional include in the legacy project, and
 be more up to date regarding the content.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I noticed that MonoDevelop does not support conditional file includes in projects, and there are indeed some in of Microsoft.Build.Engine.csproj<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hope this helps; I’d like to contribute more but like you, have limited “spare” time. I’d aim to document things better if anything.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Cheers<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> mono-devel-list-bounces@lists.ximian.com [mailto:mono-devel-list-bounces@lists.ximian.com]
<b>On Behalf Of </b>Marcelo Zabani<br>
<b>Sent:</b> Friday, 20 September 2013 12:01 AM<br>
<b>To:</b> Alan<br>
<b>Cc:</b> mono-devel<br>
<b>Subject:</b> Re: [Mono-dev] Contributing to xbuild<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Sorry to bring this thread up after so much time, but I haven't had too much time on my hands lately. I've been trying to understand XBuild's and Microsoft.Build.Engine's code in Mono to be able to contribute (even if just a little bit)
 but I'm having a hard time understanding what is going on. First, I had to do some "trickery" to get xbuild to build inside Monodevelop. More specifically, I tried opening /mcs/tools/xbuild/xbuild.sln with Monodevelop and build, but before I was able to do
 that, I had to do the following:<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Include some files in /mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.csproj. The files below were already included in Microsoft.Build.Engine-net_[2_0,3_5,4_0,4_5].csproj:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\ToolsetCollection.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\ToolsetDefinitionLocations.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\Toolset.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\ProjectLoadSettings.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\ExpressionEvaluationException.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\LogExtensions.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="..\Microsoft.Build.Utilities\Mono.XBuild.Utilities\MSBuildUtils.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="Microsoft.Build.BuildEngine\UnknownToolsVersionException.cs" /><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <Compile Include="..\..\tools\xbuild\SolutionParser.cs" /><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
This didn't scare me too much, since I think what actually gets build are the versioned framework files (2_0, 3_5 and so on), but then why have a Microsoft.Build.Engine.csproj?<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
What I really didn't understand is that I had to change the visibility of UnknownToolsVersionException and some more types from internal to public, since xbuild depends on these (and UnknownToolsVersionException is in the Microsoft.Build.Engine library). This
 led me to the conclusion that I really don't understand xbuild's build process, since of course when I build Mono it gets built successfully.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
When looking at the project files, I coul see some files were included on a per Configuration basis, but MonoDevelop showed them all in the tree view no matter what configuration I chose in the IDE. Is this intended behavior?<o:p></o:p></li></ul>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Sorry for the long email, and thanks in advance.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Thu, Sep 5, 2013 at 12:13 AM, Alan <<a href="mailto:alan.mcgovern@gmail.com" target="_blank">alan.mcgovern@gmail.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">Hey,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The correct thing to do is probably to build the entire mono class libraries first using the normal procedure for building mono on your OS. Once that's done you should not need to modify assembly references in the csproj files. You may
 need to add missing cs files to the csproj though. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm looking forward to your contributions!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Alan<o:p></o:p></span></p>
</div>
</div>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <br>
Marcelo Zabani<br>
(19) 9341-0221<o:p></o:p></p>
</div>
</div>
</body>
</html>