Search code examples
c#asp.net.net

How import WebApplicationBuilder in a Class Library?


I want to create an extension method for WebApplicationBuilder:

public static void AddData(this WebApplicationBuilder builder)
{
    var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
    builder.Services.AddDbContext<ApplicationDbContext>(option =>
    {
        option.UseSqlite(connectionString);
    });
}

this method works in a project that use: <Project Sdk="Microsoft.NET.Sdk.Web">, but if I put this method in a class libary then it doesn't work (<Project Sdk="Microsoft.NET.Sdk>) because it doesn't find Microsoft.AspNetCore.Builder

Otherwise, if I use <Project Sdk="Microsoft.NET.Sdk.Web"> the compiler say that there is no Main in the project.

How can I do?

Why can't I write this?

using Microsoft.AspNetCore.Builder;

Solution

  • I had exactly the same problem but this Microsoft doc explains what you need to do.

    Add

      <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
      </ItemGroup>
    

    to your .csproj and you can then use

    using Microsoft.AspNetCore.Builder;
    

    in your regular class library which targets Microsoft.NET.Sdk.