VersionSurgeon 1.0.2
See the version list below for details.
dotnet add package VersionSurgeon --version 1.0.2
NuGet\Install-Package VersionSurgeon -Version 1.0.2
<PackageReference Include="VersionSurgeon" Version="1.0.2" />
<PackageVersion Include="VersionSurgeon" Version="1.0.2" />
<PackageReference Include="VersionSurgeon" />
paket add VersionSurgeon --version 1.0.2
#r "nuget: VersionSurgeon, 1.0.2"
#:package VersionSurgeon@1.0.2
#addin nuget:?package=VersionSurgeon&version=1.0.2
#tool nuget:?package=VersionSurgeon&version=1.0.2
VersionSurgeon
Author: Amit Dua
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.
๐ Getting Started
- 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" />
- Prepare Your Code Snapshots
Create two folders with .cs files from different versions of your codebase:
C:\MyApp\OldVersion
C:\MyApp\NewVersion
- 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 | Versions 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. |
-
net8.0
- VersionSurgeon.Core (>= 1.0.0)
- VersionSurgeon.Plugins (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.