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

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

Releases

No releases published

Packages

No packages published

Languages