nnesly

Deploy your ASP.NET Core project as it is, with SQL Server next to it — no Dockerfile, no port setting, no connection-string code.

nesly treats .NET as a first-class stack, not a container you configure yourself. The .csproj is found, the SDK image follows the framework it targets (net8.0, net9.0, net10.0), the app is published ReadyToRun, and the listening address is set for you. Add SQL Server with one command and ConnectionStrings__Default is in the environment before the first request.

terminal
$ nesly addon add mssql --yes
Added mssql. Injected env: DATABASE_URL, ConnectionStrings__Default
$ nesly deploy --yes
[queued] deployment accepted
[building] building .NET with the official SDK image for the framework this project targets
[deploying] health check: app answered (HTTP 200)
[ready] serving at https://shop-api-q4m1.nesly.net

How it works

  1. 1

    Point us at the project

    A root .sln with projects under src/ is fine; with several .csproj files the one Microsoft.NET.Sdk.Web project is published. Nothing to add to the repository.

  2. 2

    Attach SQL Server

    nesly addon add mssql creates your own database and login. Your code keeps builder.Configuration.GetConnectionString("Default"); the value is injected, never committed.

  3. 3

    Deploy, migrate, go live

    Set release = "dotnet ef database update" and the bundled migrations run before each release goes live. The deploy is live only after the app answers.

What you get

The SDK your .csproj asks for

The build image follows <TargetFramework>; a new .NET release is usable the day Microsoft publishes its image, without waiting on us.

ReadyToRun by default

Publish is ReadyToRun so the first request after a cold start is fast. Native AOT stays your choice; it is not forced on EF Core projects.

No port to configure

ASPNETCORE_URLS is set to the address the platform routes to. Kestrel listens where it should without a line of code.

SQL Server that your app already understands

ConnectionStrings__Default and DATABASE_URL arrive as environment variables; EF Core and Dapper read them unchanged. Your login reaches only your own database.

PostgreSQL works the same way

Prefer Npgsql? nesly addon add postgres injects ConnectionStrings__Default for it too, so switching providers is a package change, not a platform change.

Migrations as part of the release

A Migrations folder is bundled into an EF bundle at build time; the release command runs it inside the runtime image, so schema and code ship together.

Pricing

Deploying .NET is included in every plan. SQL Server is on Pro (TRY 869 a month with VAT in Turkey, $18 without VAT elsewhere): your own database on a SQL Server Express instance, up to 10 GB per database, with nightly backups kept for 14 days.

  • No licence fee and no instance fee for SQL Server Express; it is part of the plan.
  • A dedicated SQL Server instance for larger databases is not on sale yet; write to us before you plan around one.
See plans and allowances

Use cases

A line-of-business API

ASP.NET Core Web API with EF Core migrations, SQL Server, and a staging preview the business can click through before release.

Blazor Server or Razor Pages

Server-rendered apps run as a container with their state on SQL Server or PostgreSQL; sign-in can be added without writing auth code.

Moving off a Windows host

Take the project as it is, attach SQL Server, restore your data with your own tools, and keep GetConnectionString("Default") as it was.

Questions, answered

Which .NET versions are supported?
Whatever your .csproj targets: net8.0, net9.0 and net10.0 today, because the SDK image is chosen from <TargetFramework> rather than from a fixed list.
Do I need a Dockerfile?
No. The platform writes one from your project on each build. If you have your own Dockerfile in the root, it is used instead, exactly as written.
Is SQL Server available on the Free plan?
No; SQL Server is a Pro addon. PostgreSQL is available on Free and also injects ConnectionStrings__Default, so you can start there and switch.
Can I run EF Core migrations on deploy?
Yes. With release = "dotnet ef database update" the Migrations folder is bundled at build time and applied before the release goes live. Without a Migrations folder the build refuses and says why.
How big can the database be?
Up to 10 GB per database on the shared Express instance. A dedicated instance is not on sale yet.

Related products

Start from the .NET + SQL Server template

nesly new dotnet-mssql copies a working ASP.NET Core project with EF Core; two commands later it is live with its database.