VersionSurgeon 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package VersionSurgeon --version 1.0.1
                    
NuGet\Install-Package VersionSurgeon -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="VersionSurgeon" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="VersionSurgeon" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="VersionSurgeon" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add VersionSurgeon --version 1.0.1
                    
#r "nuget: VersionSurgeon, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package VersionSurgeon@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=VersionSurgeon&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=VersionSurgeon&version=1.0.1
                    
Install as a Cake Tool

VersionSurgeon MIT License

VersionSurgeon is a plugin-based framework for semantic versioning and compatibility analysis in .NET 8.
It helps developers detect breaking changes between versions of their codebase and recommends appropriate version bumps.

โœจ Features

  • ๐Ÿ”Œ Plugin-driven architecture for compatibility analysis
  • ๐Ÿง  Roslyn-powered static code inspection
  • ๐Ÿ“ฆ Analyzer registry with over 35 built-in plugins
  • ๐Ÿ“ File-based diffing of C# source files
  • ๐Ÿ“Š Compatibility scoring and semantic versioning guidance
  • ๐Ÿ› ๏ธ CLI and SDK support for integration into pipelines
  • ๐Ÿ”ง Extensible via custom analyzers
  • ๐Ÿš€ NuGet-packable and CI/CD-friendly
  • ๐Ÿงช Built-in test harness for plugin validation

๐Ÿ” Built-in Analyzers

VersionSurgeon includes the following analyzers out of the box:

  • PublicSurfaceAnalyzer
  • MethodSignatureAnalyzer
  • FieldChangeAnalyzer
  • PropertyChangeAnalyzer
  • EnumChangeAnalyzer
  • ConstructorChangeAnalyzer
  • VisibilityChangeAnalyzer
  • GenericTypeAnalyzer
  • InheritanceChangeAnalyzer
  • AttributeChangeAnalyzer
  • ExceptionContractAnalyzer
  • ReturnTypeAnalyzer
  • ParameterChangeAnalyzer
  • StaticMemberAnalyzer
  • VirtualMemberAnalyzer
  • AbstractMemberAnalyzer
  • SealedClassAnalyzer
  • InternalApiAnalyzer
  • ExtensionMethodAnalyzer
  • EventChangeAnalyzer
  • DelegateChangeAnalyzer
  • NullableReferenceAnalyzer
  • AsyncMethodAnalyzer
  • TupleChangeAnalyzer
  • DynamicUsageAnalyzer
  • RefReadonlyAnalyzer
  • RecordTypeAnalyzer
  • RequiredMemberAnalyzer
  • InterfaceImplementationAnalyzer
  • BaseClassChangeAnalyzer
  • TypeAccessibilityAnalyzer
  • XmlDocChangeAnalyzer
  • AnnotationChangeAnalyzer
  • MetadataTokenAnalyzer
  • ContractAnnotationAnalyzer
  • TestExposureAnalyzer

Each plugin implements ICompatibilityAnalyzer and contributes to the overall compatibility score.

NuGet

๐Ÿš€ Getting Started

  1. Install the NuGet Package

Use the .NET CLI:

dotnet add package VersionSurgeon

Or add this to your .csproj:

<PackageReference Include="VersionSurgeon" Version="1.0.0" />
  1. Prepare Your Code Snapshots

Create two folders with .cs files from different versions of your codebase:

C:\MyApp\OldVersion  
C:\MyApp\NewVersion
  1. Run the Analysis

In your app:

using VersionSurgeon.Engine;

var report = VersionSurgeon.PerformSurgicalAnalysis(
    @"C:\MyApp\OldVersion",
    @"C:\MyApp\NewVersion",
    new Version("1.2.3")
);

Console.WriteLine(report);

๐Ÿค Contributing

We welcome contributions of all kinds. Please follow these guidelines:

  • Keep classes under 50 lines when possible
  • Use clear naming and consistent formatting
  • Write unit tests for each plugin
  • Submit pull requests with descriptive titles

Author: Amit Dua

โค๏ธ Sponsor

If you find VersionSurgeon useful, consider sponsoring the project to support ongoing development.

GitHub Sponsors โ†’ https://github.com/sponsors/AmitDua

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 260 9/1/2025
1.0.2 224 9/1/2025
1.0.1 215 9/1/2025
1.0.0 217 9/1/2025