Based on a novel by Patrick Größ
The mixin cross referencer ("MixinXRef") is a tool for generating a browsable report (HTML). The report aids understanding of large architectures that use many mixins.
The source can be found in the re-motion contribution GitHub
- The assembly directory contains the assemblies for analysis; all dependencies must resolve.
- If pages already exist in the output directory, MixinXRef asks for confirmation for overwriting these files
- A custom remotion reflector is an implementation for an
IRemotionReflector, i.e. a module for interpreting the mixin configuration. You won't need this unless the current API for mixin discovery changes or you change it for your project.
xml_utilities must exist in the same directory where
MixinXRef.exe is located. The
xml_utilities contains XSLT style-sheets, the saxon XSLT processor and the
How it works
MixinXRef loads the assemblies for analysis via .NET reflection and generates an XML document. MixinXRef uses XSLT 2.0 for transforming that XML document to HTML pages.
- .NET reflection and mixin reflection (re-mix)
- LINQ to XML
- XSLT 20.0 (Saxon XSLT processor)
Configuring XML formatting
MixinXRef.Formatting.IOutputFormatter controls output of "modifiers" for types and their members, as well as "signatures" for members. The output formatter currently in use lovingly renders signatures, i.e. type names, highlighting and usage of C# aliases.
New re-motion version
You can use MixinXRef for projects with various versions of re-motion – for as long as the mixin reflection API does not change. As soon as it DOES change, you must adapt
MixinXRef.Reflection.Remotion.IRemotionReflector accordingly. What's more, the
must return an appropriate instance. The alternative is to drop in an
IRemotionReflector implementation with the third, optional,
custom-remotion-reflector-assembly-qualified-name (see above, Using MixinXRef).
Happy mixin surfing