[Mono-list] linkage question

Jonathan Pryor jonpryor at vt.edu
Fri Feb 6 13:20:24 EST 2009


On Fri, 2009-02-06 at 10:52 -0700, Ryan Heaton wrote:
> Interesting. How exactly does an API get identified as "stable"? Some
> kind of compiler flag?

By the author saying that it's stable, signing the assembly (see sn(1)),
and installing it into the GAC (gacutil /i, which requires that the
assembly be signed).

> And how does one install a stable assembly into the GAC?

gacutil /i.

> Just curious; I doubt I'll be using the GAC.

The GAC should not be used lightly.  Placing an assembly into the GAC is
saying "the public API will never change [for this primary version] in
an incompatible manner."  Thus, for example, you can't rename existing
types or members, or change the accessibility of members from public to
non-public, change the types of members (e.g. field to a property), etc.

Any of which may be needed for "cleanliness" reasons, bug fixes, and the
like.

Which isn't to say that the GAC shouldn't be used -- Gtk# has a stable
API, and certainly should use the GAC to simplify dependencies for other
applications -- but some care and thought needs to be used before
deciding to place assemblies into the GAC.

 - Jon




More information about the Mono-list mailing list