Sunday, 28 October 2007

Building Rhino Tools from the trunk

I read about the release of Binsor 2.0, and thought that might be really handy for a current project. The problem is that you need to compile it yourself.

This was causing me a few headaches and one late night after a countless false starts I gave up and posted to the Rhino Tools Dev group.

Prerequisites

You will need the command-line SVN tools (even if you already have TortoiseSVN).

Directory layout

I've used the following directory layout (with SVN repository paths):

I then saved RhinoTools-Trunk\BuildFromTrunk-Config.build.sample to BuildFromTrunk-Config.build and edited it like this:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Update-All;Build-All;Copy-To-Artifact-Dir" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <!-- Configuration -->
 <PropertyGroup>
 <Configuration>debug</Configuration>
 <Enable-Tests>false</Enable-Tests>
 
 <!-- User Settings -->
 <Dest-Dir></Dest-Dir>
 <Dest-Lib-Dir>$(Dest-Dir)\lib\$(Configuration)</Dest-Lib-Dir>
 <Dest-Tool-Dir>$(Dest-Dir)\tools</Dest-Tool-Dir>
 
 <Tools-Dir>$(MSBuildProjectDirectory)\SharedLibs\Tools</Tools-Dir>
 <NH-Dir>$(MSBuildProjectDirectory)\..\NHibernate-Trunk\nhibernate</NH-Dir>
 <Castle-Dir>$(MSBuildProjectDirectory)\..\Castle-Trunk</Castle-Dir>
 <Rhino-Dir>$(MSBuildProjectDirectory)</Rhino-Dir>
 <Artifact-Dir>$(MSBuildProjectDirectory)\Trunk-Artifacts</Artifact-Dir>
 
 <MSBuildCommunityTasksPath>$(Tools-Dir)</MSBuildCommunityTasksPath>
 <Svn-Dir>$(Tools-Dir)\Subversion</Svn-Dir>
 </PropertyGroup>
</Project>

The final thing that caused me grief was some missing edits to RhinoTools-Trunk\rhino-commons\Rhino.Commons\Rhino.Commons.csproj. Hopefully this will be patched soon, but I had to make the following hand-edits to the csproj file:

Index: Rhino.Commons.csproj =================================================================== --- Rhino.Commons.csproj (revision 908) +++ Rhino.Commons.csproj (working copy) @@ -158,7 +158,9 @@ <Compile Include="Binsor\Extensions\StartableExtension.cs" /> <Compile Include="Binsor\Macros\AbstractBinsorMacro.cs" /> <Compile Include="Binsor\Macros\BaseBinsorExtensionMacro.cs" /> - <Compile Include="Binsor\Macros\BaseNamedBinsorMacro.cs" /> + <Compile Include="Binsor\Macros\BaseBinsorToplevelMacro.cs" /> + <Compile Include="Binsor\Macros\BaseConfigurationMacro.cs" /> + <Compile Include="Binsor\Macros\ParametersMacro.cs" /> <Compile Include="Binsor\Macros\ComponentMacro.cs" /> <Compile Include="Binsor\Macros\ComponentMethodVisitor.cs" /> <Compile Include="Binsor\Macros\ConfigurationMacro.cs" />

I then opened a Visual Studio 2005 Command Prompt ("Run as Administrator" on Vista), and entered:

msbuild BuildFromTrunk.build /t:Build-All

3 minutes and 44 odd seconds later, Rhino.Commons.dll appeared.

One thing to note, this is built of the trunks of NHibernate and Castle Project code, so those bits may or may not be as stable as the most recent public releases.

1 comment:

Adam Tybor said...

Nice to see someone is using my BuildFromTrunk script. The CopyTo target is a nice feature for quickly copying deps to projects. It was solely based out of frustration of copying 32+ dlls for each one of my projects.