Metalama 1.0 / / Metalama Documentation / Conceptual Documentation / Deployment / Nu­Get Packages

List of NuGet Packages

Metalama is composed of many NuGet packages, however some are used only for testing or trouble shooting (using the introspection APIs) and will never be included in your public packages.

Package list

Package Name Scenarios Description
Metalama.Framework.Redist Run-Time Execution The only package required to execute code built with Metalama. It does not contain or reference the assets to build with Metalama.
Metalama.Framework Compiling, Testing, Introspection The typical top-level package for a project that defines Metalama aspects. See Installing Metalama: Quick Start.
Metalama.Compiler Compiling Replaces Microsoft's C# compiler with Metalama's own fork.
Metalama.Compiler.Sdk Compiling Defines the extensibility API of Metalama.Compiler.
Metalama.Framework.Sdk Compiling Defines the low-level extensibility API of Metalama.Framework (extensions using the Roslyn API).
Metalama.TestFramework Testing The top-level package for test projects. References Metalama.Framework but inhibits most of its behaviors. See Compile-Time Testing.
Metalama.Framework.Engine Testing, Introspection An opaque implementation assembly required by the testing and introspection packages.
Metalama.Framework.Introspection Introspection Allows to query the code model representing the output of the Metalama process.
Metalama.Framework.Workspaces Introspection Allows any application to load a Visual Studio project or solution and to represent its code model and the Introspection of the Metalama process.

Package diagrams

Legend

graph TD t[Test and introspection] class t testing classDef testing fill:orange; c[Compile-time] class c compileTime classDef compileTime fill:yellow; r[Run-time] class r runTime classDef runTime fill:lightgreen; classDef framework fill:red; f[Core] class f framework u[Your Code] classDef userCode fill:white class u userCode

Building, executing and testing

graph TD YourCode -- references --> Metalama.Framework YourTests -- references --> YourCode Metalama.Framework -- references --> Metalama.Framework.Redist Metalama.Framework -- references--> Metalama.Compiler Metalama.Framework -- contains --> analyzers((compiler add-ins)) Metalama.TestFramework -- references --> Metalama.Framework.Redist Metalama.TestFramework -- inhibits --> Metalama.Framework Metalama.TestFramework -- references--> Metalama.Framework.Engine Metalama.TestFramework -- references--> xUnit Metalama.Framework.Engine -- references --> Metalama.Framework YourTests -- references --> Metalama.TestFramework IDE -- loads --> analyzers Metalama.Compiler -- loads --> analyzers YourCode[Your Aspects] YourTests[Your Aspect Tests] Metalama.Compiler -- contains --> compiler((full compiler)) classDef testing fill:orange; class Metalama.TestFramework testing; class Metalama.Framework.Engine testing; class Metalama.Framework.Introspection testing; class Metalama.Framework.Workspaces testing; class Metalama.LinqPad testing; classDef compileTime fill:yellow; class Metalama.Compiler compileTime; class Metalama.Compiler.Sdk compileTime; class Metalama.Framework.Sdk compileTime; classDef runTime fill:lightgreen; class Metalama.Framework.Redist runTime; classDef userCode fill:white; class YourCode userCode; class YourTests userCode; class LinqPad userCode; classDef framework fill:red; class Metalama.Framework.Redist framework; class Metalama.Framework framework;

Introspection

graph TD Metalama.Framework.Introspection -- references --> Metalama.Framework Metalama.Framework.Workspaces -- references --> Metalama.Framework.Engine Metalama.Framework.Workspaces -- references --> Metalama.Framework.Introspection Metalama.Framework.Engine -- references --> Metalama.Framework Metalama.Framework.Engine -- references --> Roslyn Metalama.Framework.Engine -- references --> Metalama.Framework.Introspection Metalama.LinqPad -- references --> Metalama.Framework.Workspaces LinqPad -- references --> Metalama.LinqPad LinqPad -- references --> Metalama.Framework.Workspaces YourApp -- references --> Metalama.Framework.Workspaces LinqPad[LinqPad Queries] YourApp[Your Introspection App] classDef testing fill:orange; class Metalama.TestFramework testing; class Metalama.Framework.Engine testing; class Metalama.Framework.Introspection testing; class Metalama.Framework.Workspaces testing; class Metalama.LinqPad testing; classDef compileTime fill:yellow; class Metalama.Compiler compileTime; class Metalama.Compiler.Sdk compileTime; class Metalama.Framework.Sdk compileTime; classDef userCode fill:white; class LinqPad userCode; class YourApp userCode; classDef framework fill:red; class Metalama.Framework framework;

SDK

graph TD YourPackage -- contains --> YourCode YourPackage -- contains --> YourWeaver YourCode -- references --> Metalama.Framework Metalama.Compiler -. loads .-> YourWeaver YourWeaver -- references --> Metalama.Framework.Sdk YourCode[Your Attributes] YourWeaver[Your Weavers] YourWeaver -- references --> YourCode YourPackage[Your Package] Metalama.Framework -- references --> Metalama.Framework.Redist Metalama.Framework -- references--> Metalama.Compiler Metalama.Compiler.Sdk -- references --> Roslyn Metalama.Framework.Sdk -- references --> Metalama.Compiler.Sdk classDef testing fill:orange; class Metalama.TestFramework testing; class Metalama.Framework.Engine testing; class Metalama.Framework.Introspection testing; class Metalama.Framework.Workspaces testing; class Metalama.LinqPad testing; classDef compileTime fill:yellow; class Metalama.Compiler compileTime; class Metalama.Compiler.Sdk compileTime; class Metalama.Framework.Sdk compileTime; classDef runTime fill:lightgreen; class Metalama.Framework.Redist runTime; classDef userCode fill:white; class YourCode userCode; class YourWeaver userCode; class YourPackage userCode; classDef framework fill:red; class Metalama.Framework.Redist framework; class Metalama.Framework framework;