Awesome
<img src="https://github.com/Fody/Home/raw/master/images/fody.png" height="40px"> Fody
The Home repository is the starting point for people to learn about Fody, the project.
Fody is an extensible tool for weaving .net assemblies. It enables the manipulation of the IL of an assembly as part of a build, which requires a significant amount of plumbing code. This plumbing code involves knowledge of both the MSBuild and Visual Studio APIs. Fody attempts to eliminate that plumbing code through an extensible add-in model. This technique is very powerful, for example you can turn simple properties into full INotifyPropertyChanged implementations, add checks for null arguments, add Method Timings, even make all your string comparisons case insensitive.
<!--- StartOpenCollectiveBackers -->Already a Patron? skip past this section
Community backed
Fody requires significant effort to maintain. As such it relies on financial support to ensure its long term viability.
It is expected that all developers using Fody become a Patron on OpenCollective.
See Licensing/Patron FAQ for more information.
Gold Sponsors
Support this project by becoming a Gold Sponsor. A large company logo will be added here with a link to your website.
<a href="https://www.postsharp.net?utm_source=fody&utm_medium=referral"><img alt="PostSharp" src="https://raw.githubusercontent.com/Fody/Home/master/images/postsharp.png"></a>
Silver Sponsors
Support this project by becoming a Silver Sponsor. A medium company logo will be added here with a link to your website.
<a href="https://www.gresearch.co.uk/"><img alt="G-Research" width="120px" src="https://raw.githubusercontent.com/Fody/Home/master/images/g-research.svg?sanitize=true"></a> <a href="https://particular.net/"><img alt="Particular Software" width="200px" src="https://raw.githubusercontent.com/Fody/Home/master/images/particular.svg?sanitize=true"></a>
Bronze Sponsors
Support this project by becoming a Bronze Sponsor. The company avatar will show up here with a link to your OpenCollective Profile.
<a href="https://opencollective.com/fody/tiers/bronze/0/website"><img src="https://opencollective.com/fody/tiers/bronze/0/avatar.svg?avatarHeight=100"></a> <a href="https://opencollective.com/fody/tiers/bronze/1/website"><img src="https://opencollective.com/fody/tiers/bronze/1/avatar.svg?avatarHeight=100"></a>
Patrons and sponsors
Thanks to all the backers and sponsors! Support this project by becoming a patron.
<a href="https://opencollective.com/fody#contributors"><img src="https://opencollective.com/fody/sponsor.svg?width=890&avatarHeight=50&button=false"><img src="https://opencollective.com/fody/backer.svg?width=890&avatarHeight=50&button=false"></a>
<!--- EndOpenCollectiveBackers --><a href="#" id="endofbacking"></a>
Main Fody code repository
The codebase of core Fody engine located at https://github.com/Fody/Fody.
The plumbing tasks Fody handles
- Injection of the MSBuild task into the build pipeline
- Resolving the location of the assembly and pdb
- Abstracts the complexities of logging to MSBuild
- Reads the assembly and pdb into the Mono.Cecil object model
- Re-applying the strong name if necessary
- Saving the assembly and pdb
Fody Uses Mono.Cecil and an add-in based approach to modifying the IL of .net assemblies at compile time.
- No install required to build.
- Attributes are optional depending on the weavers used.
- No runtime dependencies need to be deployed.
Documentation and Further Learning
- Licensing and patron FAQ<br> It is expected that all developers using Fody become a Patron on OpenCollective. See Licensing/Patron FAQ for more information.
- Usage<br> Introduction to using Fody.
- Configuration<br> All configuration options for Fody.
- Addin discovery<br> How addins are resolved.
- List of Fody weavers/addins<br>
- Changelog
- FodyAddinSamples<br> A GitHub repo that contains a working sample of every Fody addin.
- Common errors
- In solution weaving<br> Writing an addin that manipulates IL within the same solution.
- ProcessedByFody class<br> Marker class added to target assemblies for diagnostic purposes.
- Strong naming
- Supported runtimes and IDE
- Addin development<br> Building a new Fody addin.
- Addin packaging<br> Packaging and deployment of Fody weavers.
- BasicFodyAddin<br> A simple project meant to illustrate how to build an addin.
- Fody Project Configuration Manager<br> Provides an interactive tool that can support configuring weavers, which is especially helpful in solutions with many projects.
- Backers tracking/info
- Donations<br> Every month the Fody project will donate a portion of funding raised to a charity or other cause.
Naming
The name "Fody" comes from the small birds that belong to the weaver family Ploceidae.
Credits
Thanks to the following
- Jb Evain for the use of Mono Cecil
- GitHub for project hosting
- JetBrains for the generous donation of ReSharper licenses.
- xUnit
- AppVeyor and Travis CI for build and CI infrastructure
- NuGet for package delivery
- The Noun Project for the <a href="https://thenounproject.com/noun/bird/#icon-No6726">Bird</a> icon designed by <a href="https://thenounproject.com/MARCOHS">Marco Hernandez</a>