Defines the interface between the transformed compile-time user code and the Metalama engine. The package should normally never be referenced in any user project.


Keywords
AOP, Metalama, PostSharp
License
Other
Install
Install-Package Metalama.Framework.CompileTimeContracts -Version 2024.2.22

Documentation

Metalama logo

Metalama.Framework

This repository houses the core framework implementation of Metalama.

Warning

This repository operates under a source-available commercial license. While you can refer to the source code for reference and troubleshooting purposes, modifications and builds from this source code are prohibited. To modify and build from the source code, a separate Source Subscription must be acquired.

Packages

Below are the NuGet packages associated with this repository:

Package Description
Metalama.Framework This is the public API of the Metalama Framework. It incorporates a reference to Metalama.Compiler, effectively replacing the Roslyn compiler with our custom version.
Metalama.Testing.UnitTesting Provides base classes and utilities for unit testing compile-time code.
Metalama.Testing.AspectTesting A framework based on xUnit for testing code generation by aspects.
Metalama.Framework.Redist Similar to Metalama.Framework, but excludes the dependency on Metalama.Compiler.
Metalama.Framework.Sdk Facilitates the use of the Roslyn API from aspects.
Metalama.Framework.Engine This is the core implementation of Metalama.Framework. Direct referencing of this package is discouraged and unsupported. It's intended to be a dependency for Metalama.Testing.AspectTesting.
Metalama.Framework.CompileTimeContracts Defines the public API between compiled T# templates and Metalama.Framework.Engine.
Metalama.Framework.Introspection Provides an API to inspect the object model that represents the compilation process of Metalama.Framework, such as aspect and advice instances, as well as its results.
Metalama.Framework.Workspaces A supplementary API to Metalama.Framework.Introspection, designed to facilitate the loading of Visual Studio projects and solutions. This package is also useful to inspect projects that don't use Metalama. It is used by Metalama.LinqPad.
Metalama.Tool The metalama tool for the .NET CLI.