I'm still trying to extend Boost Build to compile C# files, say, on OS X (darwin) only.
Thanks to Vladimir, I can generate executables without any problem.

However, I'm still having creating a C# library with the suffix ".dll". Here is my attempt (resulting error message below):

import generators ;
import type ;
import toolset : flags ;

type.register CS : cs ;
type.register CSDLL : csdll ;

type.set-generated-target-suffix CSDLL : : dll ;

generators.register-composing mcs.make-exe : CS : EXE ;
generators.register-composing mcs.make-dll : CS  : CSDLL ;

import features ;
import feature : feature ;

actions make-exe bind CS_REFERENCE
  mcs -target:exe -r:$(CS_REFERENCE) -out:$(<) $(>)

rule link
  DEPENDS $(<) : [ on $(<) return $(CS_REFERENCE) ] ;

actions make-dll
  mcs -target:library -out:$(<).dll $(>)


If I comment out the problematic line, the output has the suffix ".csdll".

Here is the error message I get:

error: Ambiguous key <target-type>CSDLL <address-model>64 <asynch-exceptions>off <debug-symbols>on <define>DEBUG <define>PRODUCT=TipsVal <define>VERSION_DATE=2016-1-4 <define>VERSION_MAJOR=2 <define>VERSION_MICRO=8 <define>VERSION_MINOR=1 <define>VERSION_STRING=2.1.8 <exception-handling>on <extern-c-nothrow>off <hardcode-dll-paths>true <host-os>darwin <include>.. <include>../../../boost <inlining>off <install-dependencies>off <link>shared <main-target-type>CSDLL <optimization>off <os>MACOSX <pch>on <preserve-test-targets>on <profiling>off <python-debugging>off <python.interpreter>python <python>2.7 <rtti>on <runtime-debugging>on <runtime-link>shared <stdlib>native <strip>off <suppress-import-lib>false <symlink-location>project-relative <target-os>darwin <target>object(file-target)@1784 <threadapi>pthread <threading>multi <toolset-darwin:version>4.2.1 <toolset>darwin <user-interface>console <variant>debug <warnings-as-errors>off <warnings>on