通过Microsoft.AspNetCore.App元包简化程序集的引用

本文介绍了如何通过Microsoft.AspNetCore.App元包来简化ASP.NET Core项目的引用管理,避免引入过多不必要的DLL。元包提供了一组经过测试的、运行良好的包,包括日志、依赖注入等。在项目中添加Microsoft.AspNetCore.App的引用,即可直接使用相关库,而在.NET 3.0及更高版本中,需使用FrameworkReference。这样可以提升开发体验并减少发布的文件大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Asp.net core下提供默认提供了一些在.net core不能直接使用的库,如日志依赖注入选项通用主机、EntityFramework等,虽然我们可以通过Nuget的方式手动加载这些包,但这些包大多分得很细,往往会引入许多依赖的相关的包,造成动不动就引入了七八个dll的情况。虽然对于设计上来讲,包的粒度划分的细一些本身是更合理的行为,并且对实际的功能也没有什么影响,但对于很多像我一样有编程洁癖行为的开发者来说看着文件夹下一大堆和业务无关的dll多多少少有些不爽的。

可能微软也了解了我们的这一需求,推出了了元包这个概念。 元包就是一个 NuGet 包约定,描述了一组意义相关的包。 开发团队利用依赖项来描述这一组包。 他们通过这一组包来描述一个框架,然后有选择地发布出去。以某个框架为目标以及隐式引用元包,这实际上是添加了对元包中每一个独立包的引用依赖。同时也可用于发布应用。

使用元包具有以下好处:

“IServiceCollection”未含“AddDatabaseDeveloperPageExceptionFilter”的定义,并且找不到可接受第一个“IServiceCollection”类型参数的可访问扩展方法“AddDatabaseDeveloperPageExceptionFilter”(是否缺少 using 指令或程序集引用?) using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext<TodoDb>(opt => opt.UseInMemoryDatabase("TodoList")); builder.Services.AddDatabaseDeveloperPageExceptionFilter(); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.MapGet("/todoitems", async (TodoDb db) => await db.Todos.ToListAsync()); app.MapGet("/todoitems/complete", async (TodoDb db) => await db.Todos.Where(t => t.IsComplete).ToListAsync()); app.MapGet("/todoitems/{id}", async (int id, TodoDb db) => await db.Todos.FindAsync(id) is Todo todo ? Results.Ok(todo) : Results.NotFound()); app.MapPost("/todoitems", async (Todo todo, TodoDb db) => { db.Todos.Add(todo); await db.SaveChangesAsync(); return Results.Created($"/todoitems/{todo.Id}", todo); }); app.MapPut("/todoitems/{id}", async (int id, Todo inputTodo, TodoDb db) => { var todo = await db.Todos.FindAsync(id); if (todo is null) return Results.NotFound(); todo.Name = inputTodo.Name; todo.IsComplete = inputTodo.IsComplete; await db.SaveChangesAsync(); return Results.NoContent(); }); app.MapDelete("/todoitems/{id}", async (int id, TodoDb db) => { if (await db.Todos.FindAsync(id) is Todo todo) { db.Todos.Remove(todo); await db.SaveChangesAsync(); return Results.NoContent(); } return Results.NotFound(); }); app.Run(); 哪里错了我用的net6
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值