[Mono-dev] Contributing to xbuild

Marcelo Zabani mzabani at gmail.com
Thu Sep 19 14:01:27 UTC 2013

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:

Include some files in
/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.csproj. The files
below were already included in
    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />
    <Compile Include="Microsoft.Build.BuildEngine\ToolsetCollection.cs" />
Include="Microsoft.Build.BuildEngine\ToolsetDefinitionLocations.cs" />
    <Compile Include="Microsoft.Build.BuildEngine\Toolset.cs" />
    <Compile Include="Microsoft.Build.BuildEngine\ProjectLoadSettings.cs" />
Include="Microsoft.Build.BuildEngine\ExpressionEvaluationException.cs" />
    <Compile Include="Microsoft.Build.BuildEngine\LogExtensions.cs" />
Include="Microsoft.Build.BuildEngine\UnknownToolsVersionException.cs" />
    <Compile Include="..\..\tools\xbuild\SolutionParser.cs" />

   - 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
   - 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.
   - 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

Sorry for the long email, and thanks in advance.

On Thu, Sep 5, 2013 at 12:13 AM, Alan <alan.mcgovern at gmail.com> wrote:

> Hey,
> 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.
> I'm looking forward to your contributions!
> Alan

Marcelo Zabani
(19) 9341-0221
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20130919/3b2deb9a/attachment.html>

More information about the Mono-devel-list mailing list