We're distributing an OS X application using Monobjc's <mkbundle> and
<mkappl> tasks. The <mkbundle> task embeds the .dll files that our app
depends on. We would like to selectively blacklist certain .dlls from
this process due to LGPL/licensing reasons. In other words, I want to
embed one set of dlls, and load another set of dlls at runtime from
standalone .dll files in our app bundle. I'd like to know the best way
to achieve this.

I've attempted to add a <without-assemblies/> sub task to the
NAnt.Monobjc.dll, which would let me blacklist one or more dlls (patch
attached). This seems to work, but even after copying the non-embedded
dll files into My.App/Contents/MacOS, they still can't be loaded at
runtime. Instead I see the following message:

        ** (MyApp.exe:12143): WARNING **: The following assembly referenced
from My.Embedded.dll could not be loaded:
             Assembly:   My.NonEmbedded    (assemblyref_index=6)
             Version:    1.0.0
             Public Key: xxxxxxxxxxxxxxx
        The assembly was not found in the Global Assembly Cache, a path
listed in the MONO_PATH environment variable, or in the location of
the executing assembly (//).

So, what's the correct way to distribute a standalone Mac application
that bundles and references LGPL assemblies?


Reply via email to