Here's a manual way to accomplish this that I've used for finding unused Classes that are marked public.
- Search and Replace all "public class" with "private class" for one project in your solution. May also need to replace "public static class" and/or "public abstract class".
- Build to find all the errors
- For each error in the build, use your source control to restore the file for the referenced class.
- Repeat for every error until the build succeeds.
- Any remaining files that haven't been restored are likely candidates for removal.
- (optional) Rename the classes in the above files and do one more build to find errors.
- Do one last Search for the name of the class you want to remove to confirm there aren't any instances of it being used in reflection or magic strings.
- Remove the identified unused class files.
- Repeat for each solution project you want to clean.
Note: If you don't follow the one class per file rule, this will require a lot more work. Also, any API service endpoints you will need to verify that it is not being used by any external projects.