When developing many applications generally a developer finds certain methods are used over and over again.

When this happens an option is to place code into a separate Visual Studio solution as a class project. If the class project becomes large with many classes and methods that can be categorized another option is to create smaller class projects so that in the first option all code is pulled into a project that are not needed while breaking down code into categories into separate projects less code will be placed into a project.

Working on option two, smaller class projects if working with a team consider placing these DLL files on a network drive or create NuGet packages, place these packages in a common area on a network drive and have developers add the path to NuGet sources in Visual Studio. If there is no common path then consider (if there is no proprietary information in the code) creating a NuGet package and host on NuGet.

An example, there are common operations for strings coded as language extension see this package where source code is available by clicking Source repository link. Note this package is not for .NET Framework, only .NET Core which brings up how can this work for traditional framework and core framework? It's possible but required additional conditionals and testing.

Another idea is to have a package for injecting code to handle unhandled exceptions in a project as done in this package.

If the choice is made to use NuGet packages its a good idea to include documentation using Git Markdown. There are extensions for both Visual Studio and VS Code to work with Git Markdown available at no cost.

If you have a subscription to Code magazine check out 2021 - September/October, Working with NuGet Local Packages