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
MixinXRef assembly-directory output-directory [custom-remotion-reflector-qualified-name]
- 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
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)
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.
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).