Skip to content

SDK that enables local-first and real-time reactive apps with embedded SQLite for .NET clients

License

Notifications You must be signed in to change notification settings

powersync-ja/powersync-dotnet

Folders and files

NameName
Last commit message
Last commit date
Mar 27, 2025
Mar 27, 2025
Mar 27, 2025
Mar 24, 2025
Mar 12, 2025
Mar 11, 2025
Mar 6, 2025
Mar 6, 2025
Mar 6, 2025
Mar 27, 2025
Mar 24, 2025
Mar 6, 2025

Repository files navigation

PowerSync is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side.

PowerSync .NET SDKs

powersync-dotnet is the monorepo for PowerSync .NET SDKs.

Monorepo Structure: Packages

Packages are published to NuGet.

  • PowerSync/Common

    • Core package: .NET implementation of a PowerSync database connector and streaming sync bucket implementation. Packages meant for specific platforms will extend functionality of Common.

Demo Apps / Example Projects

Demo applications are located in the demos/ directory. Also see our Demo Apps / Example Projects gallery which lists all projects by the backend and client-side framework they use.

Command-Line

Supported Frameworks

This PowerSync SDK currently targets the following .NET versions:

  • .NET 9 - Latest version

  • .NET 8 - Current LTS Version, used for development of this project

  • .NET 6 - supported for compatibility with older projects)

  • .NET Standard 2.0 - for compatibility with older libraries and frameworks, tested/verified older versions will be listed below.

  • .NET Framework 4.8:

    To get a .NET Framework 4.8 working with this SDK add the following to your .csproj file:

    <PropertyGroup>
      ...
      <!-- Ensures the correct SQLite DLL is available -->
      <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
      <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    </PropertyGroup>
    
    <ItemGroup>
      ...
      <!-- Ensures the HTTP client resolves in the SDK -->
      <PackageReference Include="System.Net.Http" Version="4.3.4" /> 
    </ItemGroup>

    and create a IsExternalInit.cs file in your project with the following contents:

    using System.ComponentModel;
    
    namespace System.Runtime.CompilerServices
    {
        [EditorBrowsable(EditorBrowsableState.Never)]
        internal class IsExternalInit { }
    }

When running commands such as dotnet run or dotnet test, you may need to specify the target framework explicitly using the --framework flag.

Development

Download PowerSync extension

dotnet run --project Tools/Setup    

Install dependencies

dotnet restore

Tests

Run all tests

dotnet test -v n --framework net8.0

Run a specific test

dotnet test -v n --framework net8.0 --filter "test-file-pattern"  

Using the PowerSync.Common package in your project

dotnet add package PowerSync.Common --prerelease