Meta tags:
description= Metalama is PostSharp s open-source patterns and architecture toolkit for C#: implement design patterns at compile time, enforce architecture as you type.;
Headings (most frequently used words):
it, metalama, how, does, by, has, no, pattern, keyword, fixes, that, boilerplate, architecture, erosion, work, compare, what, holding, you, back, recognized, net, developers, get, started, with, products, pricing, support, company, total, waste, of, time, avoidable, defects, rules, nobody, enforces, death, thousand, commits, create, an, aspect, apply, to, business, code, the, result,
Text of the page (most frequently used words):
the (83), #metalama (61), and (58), code (39), you (28), time (18), your (18), can (16), for (16), postsharp (15), that (14), support (12), source (12), aspects (12), meta (12), are (11), use (11), with (11), tools (10), not (10), roslyn (10), cart (9), public (9), rules (8), architecture (8), yes (8), about (7), get (7), using (7), what (7), method (7), generated (7), boilerplate (7), pattern (7), result (7), visual (6), studio (6), developers (6), compile (6), patterns (6), programming (6), build (6), aspect (6), does (6), from (6), level (6), orderservice (6), placeorder (6), writeline (6), console (6), pricing (5), marketplace (5), see (5), where (5), only (5), simple (5), codebase (5), development (5), will (5), when (5), one (5), team (5), them (5), apis (5), complex (5), new (5), low (5), every (5), never (5), our (5), documentation (4), policies (4), products (4), supported (4), open (4), design (4), read (4), net (4), designed (4), but (4), real (4), most (4), any (4), since (4), framework (4), has (4), built (4), more (4), transformed (4), write (4), hand (4), performance (4), debugging (4), refactoring (4), override (4), control (4), over (4), compiler (4), accessibility (4), purchase (4), 2004 (3), blog (3), contact (3), company (3), account (3), faq (3), download (3), started (3), single (3), start (3), used (3), which (3), might (3), necessary (3), licenses (3), already (3), solution (3), how (3), they (3), directly (3), compare (3), show (3), before (3), generate (3), based (3), this (3), needs (3), writing (3), need (3), other (3), learning (3), offers (3), help (3), want (3), implement (3), while (3), both (3), losing (3), line (3), type (3), repo (3), cases (3), exception (3), catch (3), return (3), try (3), logattribute (3), class (3), once (3), target (3), toolkit (3), subscriptions (3), docs (3), overview (3), sharpcrafters (2), 2026 (2), privacy (2), policy (2), license (2), licensing (2), results (2), software (2), frameworks (2), against (2), expand (2), projects (2), adds (2), value (2), applied (2), reporting (2), errors (2), hacks (2), affect (2), classes (2), like (2), tool (2), should (2), clear (2), thanks (2), feature (2), core (2), away (2), technologies (2), vendor (2), maintained (2), productivity (2), all (2), well (2), integration (2), preview (2), switch (2), even (2), debug (2), business (2), understand (2), same (2), would (2), memory (2), overhead (2), inlining (2), unlike (2), dynamic (2), introduce (2), compilation (2), between (2), learn (2), understanding (2), members (2), enough (2), api (2), pull (2), common (2), have (2), custom (2), fixes (2), faster (2), amount (2), behaviors (2), details (2), machine (2), repetitive (2), focus (2), agent (2), enforced (2), nothing (2), past (2), output (2), tested (2), copy (2), little (2), last (2), whole (2), next (2), lands (2), why (2), methods (2), hacking (2), written (2), integrated (2), simpler (2), requires (2), rebuild (2), templates (2), throw (2), name (2), gettype (2), failed (2), returned (2), _repository (2), save (2), var (2), entering (2), order (2), amender (2), loggingfabric (2), log (2), add (2), apply (2), logging (2), review (2), changes (2), thousand (2), lives (2), enforces (2), total (2), waste (2), keyword (2), renewals (2), compliance (2), features (2), trade, names, terms, customer, agreements, náměstí, října, 1307, 150, prague, czech, republic, email, protected, documented, voted, silver, modeling, category, reader, choice, awards, magazine, reviews, its, rating, share, listing, recognized, advise, overuse, promote, beneficial, pragmatic, approach, usage, needed, progressive, adoption, scalable, selectively, overkill, defensively, validate, upon, unsupported, situations, instead, generating, avoid, preserve, semantical, conceptual, integrity, don, anything, unexpected, automate, least, properties, recommend, wisely, maintain, maintainable, excessive, harm, maintainability, generates, regular, applications, transition, manual, implementations, divorce, fallback, strategy, large, majority, mit, licensed, cannot, taken, relicensed, paywalled, yours, established, active, full, engineers, funded, commercial, discontinued, loses, enhance, required, integrates, msbuild, server, editors, automatically, works, tooling, present, explorer, editor, codelens, within, diff, configuration, exactly, lamadebug, believe, comprehend, meaning, better, than, cluttered, comes, fine, print, shows, exact, still, relies, template, expansion, transformations, allocation, efficient, runtime, rely, reflection, emitting, proxies, run, highly, optimized, improving, transparency, mapping, key, concerns, provides, mitigate, make, harder, everyone, detail, architects, senior, detailed, hour, training, tutorials, references, onboard, quickly, comprehensive, dozens, cover, requirements, find, leverage, ready, minutes, technology, hours, master, simply, grow, gently, aop, concepts, gradual, curve, difficult, often, simplifies, reduce, reduces, also, fans, resharper, rider, coderush, there, lock, revert, numerous, mechanisms, default, completely, initially, people, were, apprehensive, industry, transitioned, assembly, language, then, managed, garbage, collected, model, java, relinquished, gained, enormous, reliability, accustomed, handle, freeing, meaningful, tasks, delegation, actually, concerned, checks, whether, person, wrote, merges, guardrails, must, reviewed, each, drifts, enters, implementation, editing, updates, solve, different, problems, let, assistant, alternatives, cut, corners, instance, failing, properly, async, incorporates, extension, points, ensure, hit, dead, end, complete, thought, out, avoids, offering, render, less, predictable, comprehensible, encompasses, three, cultures, science, engineering, identify, remaining, mindful, two, simplify, engineered, good, stands, alone, allows, visible, replicate, juggle, combination, lack, abstraction, intricate, demanding, years, experience, approached, naively, resemble, significantly, amplify, complexity, especially, after, departure, developer, who, implemented, layer, capabilities, offer, top, considering, analyzers, generators, interceptors, achieve, classic, holding, back, exporting, analysis, warnings, introduction, interfaces, referencing, addition, transformation, fody, plug, weaves, into, matching, here, ships, lines, original, stays, untouched, green, addaspectifeligible, selectmany, selecttypes, iprojectamender, amendproject, void, projectfabric, wherever, drop, attribute, select, hundreds, fabric, linq, runs, project, proceed, overridemethod, overridemethodaspect, transform, wraps, entry, create, work, shortcut, passes, moves, further, until, small, expensive, unfeasible, death, commits, wiki, neither, hire, nobody, riddled, bugs, pasted, largely, untested, quality, suffer, avoidable, defects, manually, boring, frustrating, head, pay, twice, places, stops, drifting, erosion, missing, costing, human, merge, gets, checked, deterministically, edit, file, follows, express, dependency, naming, conventions, guidelines, plain, feedback, ide, long, request, enforce, caching, own, maintenance, inotifypropertychanged, everywhere, define, writes, parts, search, libraries, addresses, banking, information, mission, story, access, online, keys, entitlements, users, renew, frequently, asked, questions, answered, security, legal, website, versioning, servicing, phases, bug, prioritization, criteria, ask, report, issues, proven, msil, oriented,
Text of the page (random words):
metalama patterns architecture toolkit for c products postsharp the proven msil based aspect oriented framework for net metalama an open source patterns architecture toolkit for c built on roslyn support get support ask for help or report issues support policies understand our versioning policy servicing phases and bug prioritization criteria compliance our security privacy and legal policies for our products and website purchase metalama purchase new metalama licenses postsharp purchase new postsharp licenses faq the most frequently asked questions about pricing and licensing answered subscriptions renewals access your online account to see your license keys and entitlements add users to your subscriptions or renew them company about us our mission and our story contact us addresses and banking information blog metalama overview features use cases marketplace download docs products postsharp overview framework libraries pricing docs metalama overview features use cases marketplace docs support get support support policies compliance purchase metalama postsharp faq subscriptions renewals company about us contact us blog search your account metalama c has no pattern keyword metalama fixes that metalama is an open source patterns architecture toolkit for c define your team s patterns once the compiler writes the repetitive parts at build time and enforces your rules as you type write the pattern once apply it everywhere aspects generate logging caching inotifypropertychanged or your own patterns at compile time the boilerplate never lands in your repo so it never needs review or maintenance enforce architecture as you type express dependency rules naming conventions and pattern guidelines in plain c and get real time feedback in the ide long before the pull request your rules enforced by the compiler no agent no human no merge gets past them hand written or ai generated every line is checked deterministically when a pattern changes you edit one file and the whole codebase follows at the next build show me code by the postsharp team meta programming in net since 2004 what s the missing pattern keyword costing you boilerplate architecture erosion when a pattern lives only in your head you pay twice you expand it by hand in a thousand places and nothing stops the codebase from drifting away from it a total waste of time manually writing boilerplate is boring frustrating and a total waste of your time why do what a machine can do faster avoidable defects boilerplate is riddled with bugs it s copy pasted and largely untested quality and performance suffer rules nobody enforces your architecture lives in a wiki the compiler has never read it and neither has the new hire death by a thousand commits every shortcut that passes review moves the code a little further from the design until small changes are expensive and refactoring is unfeasible show me code how does it work 1 create an aspect aspects are meta classes that transform code using simple c templates this one wraps a method in logging entry return value and any exception using a real try catch logattribute cs c public class logattribute overridemethodaspect public override dynamic overridemethod console writeline entering meta target method try var result meta proceed console writeline meta target method returned result return result catch exception e console writeline meta target method failed e gettype name throw 2 apply it to business code add the aspect wherever you need it drop the log attribute on a single method or select hundreds at once with a fabric compile time linq like code that runs over your project orderservice cs c public class orderservice log public order placeorder cart cart _repository save cart or loggingfabric cs c public class loggingfabric projectfabric public override void amendproject iprojectamender amender amender selecttypes where t t accessibility accessibility public selectmany t t methods where m m accessibility accessibility public addaspectifeligible logattribute 3 the result at compile time metalama weaves the aspect into every matching method here is placeorder as it ships the green lines are generated your original code stays untouched orderservice cs c public order placeorder cart cart console writeline entering orderservice placeorder cart try var result _repository save cart console writeline orderservice placeorder cart returned result return result catch exception e console writeline orderservice placeorder cart failed e gettype name throw how does it compare metalama postsharp roslyn plug in fody transformation of the compilation using low level apis yes yes no yes addition of behaviors to source code using simple custom aspects or templates yes yes no no introduction of new members or interfaces and referencing them in the source code yes no complex no analysis of the source code and reporting of warnings and errors in real time yes requires rebuild complex complex requires rebuild debugging and exporting of transformed code yes no n a no what s holding you back can i achieve the same results with classic c and roslyn api you might be considering roslyn s low level apis directly analyzers generators and interceptors metalama is a simpler integrated layer on top of roslyn and it adds capabilities that roslyn does not offer metalama is simpler meta programming at the abstraction level of roslyn is intricate demanding years of experience when approached naively low level meta programming can resemble hacking and can significantly amplify complexity especially after the departure of the developer who implemented the meta code metalama is integrated metalama stands alone as the only tool that allows you to both generate code visible at design time and override hand written code to replicate what metalama offers you would need to juggle a combination of roslyn apis that lack integration metalama is engineered for good architecture metalama is designed to simplify development it avoids offering hacks that render the code less predictable or comprehensible software development encompasses three cultures hacking science and engineering we identify with the last one while remaining mindful of the other two metalama is a complete well thought out solution unlike alternatives that focus on the most common use cases and cut corners for instance by failing to properly implement async methods metalama incorporates enough extension points to ensure you never hit a dead end why not let an ai assistant write the boilerplate use both they solve different problems ai generated boilerplate lands in your repo every generated line must be reviewed tested and maintained and each copy drifts a little from the last metalama s output never enters the repo one aspect is the single tested implementation of the pattern and editing it updates the whole codebase at the next build ai output needs guardrails metalama checks every line against your architecture rules as you type whether a person or an agent wrote it the rules are enforced by the compiler so nothing merges past them i m concerned about losing control over my code delegation is what you actually want you want the machine to handle low level repetitive details freeing up more of your time to focus on meaningful tasks you re already accustomed to this initially people were apprehensive about losing control over performance when the industry transitioned from assembly language to c and then to the managed garbage collected memory model of c and java we ve relinquished control over low level details but have gained enormous productivity and reliability you re not completely losing control metalama offers numerous mechanisms to override default behaviors you can revert to the source code at any time there is no vendor lock in what if i am already using resharper rider or coderush you can and should use both we are also fans of refactoring tools metalama reduces the amount of code while refactoring tools help developers write code faster they do not reduce the amount of code necessary to implement a feature metalama simplifies the writing of custom rules and code fixes other refactoring tools often have more complex apis is metalama difficult to learn and use while meta programming and aop can introduce new concepts metalama is designed for a gradual learning curve start simply grow gently metalama s simple apis can get you started in minutes as you start understanding the technology and want to implement more complex rules between 4 and 16 hours of learning might be necessary to master the framework leverage ready to use aspects pull from the dozens of supported open source aspects that cover the most common requirements find them in metalama marketplace comprehensive documentation it offers clear documentation tutorials and api references to help developers onboard quickly team learning not everyone on the team needs to learn metalama in detail only architects or senior developers writing aspects will need a detailed understanding for other team members only using aspects a simple 1 hour training will be enough to get started does metalama make debugging harder one of the key concerns with meta programming is debugging but metalama provides tools to mitigate this source mapping you can switch between source and transformed code debugging code preview you can compare transformed code to source code before compilation improving transparency thanks to visual studio tools for metalama does metalama introduce performance overhead not at all metalama is a highly optimized solution based on compile time code inlining compile time unlike runtime based frameworks metalama does not rely on reflection or emitting dynamic proxies at run time efficient metalama relies on code inlining i e template expansion the transformations generate the same code you would write by hand with no performance or memory allocation overhead will i still understand my code we believe that you will comprehend the business meaning of your code even better than before since it will not be cluttered with boilerplate when the time comes to read the fine print metalama shows you the exact generated code show or debug generated code switch to the lamadebug build configuration to see exactly the code generated by metalama you can even debug it diff preview compare source and transformed code directly within visual studio codelens integration see which aspects are applied to a method directly in the editor aspect explorer see which aspects are present in the solution and how they affect the code read more about visual studio tooling is metalama well supported by development tools metalama is built on roslyn so it works with the tools you already use at design time all editors that support roslyn automatically support metalama at build time metalama integrates with msbuild and can be used in any build server visual studio tools for metalama are designed to enhance developers productivity but are not required for development what if metalama is discontinued or loses support metalama is in active development built and maintained by full time engineers at postsharp technologies and funded by commercial licenses established vendor postsharp technologies has built and supported meta programming tools for net since 2004 the core is yours the core framework the large majority of the codebase is mit licensed it cannot be taken away relicensed or paywalled fallback strategy since metalama generates regular c code applications can transition to manual implementations if necessary thanks to the metalama divorce feature can excessive use of metalama harm maintainability like any tool metalama should be used wisely to maintain a clear and maintainable codebase we recommend to use metalama to automate patterns that affect at least 20 classes or properties to avoid hacks and to preserve the semantical and conceptual integrity of the code don t do anything unexpected to defensively validate the code to which aspects are applied and reporting errors upon unsupported situations instead of generating code that might not compile is metalama overkill for most projects metalama is designed for scalable projects but can be used selectively where it adds real value progressive adoption developers can start with simple aspects and expand usage as needed pragmatic approach we advise against overuse and promote using aspects only where beneficial recognized by net developers 5 0 its rating on the visual studio marketplace where metalama and postsharp share a single listing read the reviews 2026 voted silver in the software design frameworks and modeling tools category of the visual studio magazine reader s choice awards see the results get started with metalama open source documented supported sharpcrafters s r o náměstí 14 října 1307 2 150 00 prague 5 czech republic email protected products metalama postsharp marketplace download postsharp download metalama pricing metalama pricing postsharp pricing licensing faq license agreements customer account support get support support policies metalama documentation postsharp documentation company about us contact us blog privacy policy terms of use postsharp and metalama are trade names of sharpcrafters s r o 2004 2026
|