Skip to content

Migration Guide from nExt to Nextended

This guide helps you migrate from the legacy nExt package to Nextended.

Overview

Nextended is the successor to nExt, providing the same powerful functionality with enhanced features and support for modern .NET versions (.NET 8 and .NET 9).

Key Changes

Package Name

  • Old: nExt.Core
  • New: Nextended.Core

Namespace

  • Old: nExt.*
  • New: Nextended.*

NuGet Package

Migration Steps

1. Update Package References

Update your .csproj file:

Before:

xml
<PackageReference Include="nExt.Core" Version="6.x.x" />

After:

xml
<PackageReference Include="Nextended.Core" Version="9.x.x" />

2. Update Using Statements

Use Find & Replace to update namespaces across your solution:

Before:

csharp
using nExt;
using nExt.Extensions;
using nExt.Types;

After:

csharp
using Nextended.Core;
using Nextended.Core.Extensions;
using Nextended.Core.Types;

3. Update Code References

Most functionality remains the same. The primary change is the namespace:

Before:

csharp
using nExt.Extensions;

var result = myString.ToCamel();
var dto = source.MapTo<TargetDto>();

After:

csharp
using Nextended.Core.Extensions;

var result = myString.ToCamel(); // Same API
var dto = source.MapTo<TargetDto>();  // Same API

Compatibility Matrix

nExt VersionNextended Version.NET Support
6.x7.x.NET 6, .NET 7
7.x8.x.NET 8
-9.x.NET 8, .NET 9

Breaking Changes

Minimal Breaking Changes

Nextended maintains backward compatibility with nExt's API. Most code will work without changes after updating namespaces.

Known Changes

  1. Namespace: All nExt.* namespaces are now Nextended.*
  2. Package Name: Package must be updated in project files
  3. Target Frameworks: Modern Nextended versions target newer .NET versions

Automated Migration

Using Find & Replace

  1. In Visual Studio:

    • Press Ctrl+Shift+H (Edit → Find and Replace → Replace in Files)
    • Find: using nExt
    • Replace: using Nextended.Core
    • Click "Replace All"
  2. Using Command Line (PowerShell):

    powershell
    Get-ChildItem -Recurse -Filter *.cs | ForEach-Object {
        (Get-Content $_.FullName) -replace 'using nExt', 'using Nextended.Core' | 
        Set-Content $_.FullName
    }
  3. Using dotnet CLI:

    bash
    dotnet remove package nExt.Core
    dotnet add package Nextended.Core

Step-by-Step Example

Before Migration

MyProject.csproj:

xml
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  
  <ItemGroup>
    <PackageReference Include="nExt.Core" Version="6.0.10" />
  </ItemGroup>
</Project>

UserService.cs:

csharp
using System;
using nExt.Extensions;
using nExt.Types;

public class UserService
{
    public UserDto GetUser(int id)
    {
        var user = LoadUser(id);
        return user.MapTo<UserDto>();
    }
    
    public Money CalculateTotal(decimal amount)
    {
        return new Money(amount, Currency.USD);
    }
}

After Migration

MyProject.csproj:

xml
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
  
  <ItemGroup>
    <PackageReference Include="Nextended.Core" Version="9.0.15" />
  </ItemGroup>
</Project>

UserService.cs:

csharp
using System;
using Nextended.Core.Extensions;
using Nextended.Core.Types;

public class UserService
{
    public UserDto GetUser(int id)
    {
        var user = LoadUser(id);
        return user.MapTo<UserDto>(); // Same API!
    }
    
    public Money CalculateTotal(decimal amount)
    {
        return new Money(amount, Currency.USD); // Same API!
    }
}

Testing After Migration

After migration, ensure all functionality works:

  1. Build the solution:

    bash
    dotnet build
  2. Run tests:

    bash
    dotnet test
  3. Verify functionality:

    • Test extension methods
    • Test custom types (Money, Date, etc.)
    • Test object mapping
    • Test any other nExt features you use

New Features in Nextended

While migrating, consider taking advantage of new features:

Enhanced Extension Methods

csharp
// New in Nextended
var batches = items.Batch(10);
var result = await operation.WithTimeout(TimeSpan.FromSeconds(30));

Improved Type Support

csharp
// Better .NET 8/9 support
var today = Date.Today; // Now aligns with DateOnly in .NET 6+

Additional Packages

Consider adding specialized packages:

bash
dotnet add package Nextended.EF        # Entity Framework extensions
dotnet add package Nextended.Blazor    # Blazor helpers
dotnet add package Nextended.CodeGen   # Code generation

Troubleshooting

Build Errors After Migration

Problem: Compilation errors after updating packages.

Solution:

  1. Clean the solution: dotnet clean
  2. Delete bin and obj folders
  3. Restore packages: dotnet restore
  4. Rebuild: dotnet build

Namespace Not Found

Problem: Compiler can't find types after migration.

Solution:

  • Ensure all using nExt statements are updated to using Nextended.Core
  • Check that the Nextended.Core package is properly installed
  • Verify project targets a supported framework (.NET Standard 2.0+ or .NET 8+)

Version Conflicts

Problem: NuGet version conflicts.

Solution:

  • Ensure all Nextended packages use the same version
  • Update all packages: dotnet add package Nextended.Core --version 9.0.15

Support

If you encounter issues during migration:

  1. Check the Documentation
  2. Review Common Use Cases
  3. Open an Issue on GitHub

Summary

Migration from nExt to Nextended is straightforward:

  1. Update package reference
  2. Update namespaces (Find & Replace)
  3. Test your application
  4. Optionally upgrade to newer .NET versions
  5. Explore new Nextended packages and features

The API remains largely the same, ensuring a smooth transition with minimal code changes.