我在Visual Studio 2022中开始了一个新的.NET 7项目。我使用的模板是"ASP.NET Core WebAPI"。在解决方案浏览器中,该项目呈现如下:
我可以看到,在文件夹“C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\7.0.2\ref\net7.0”中有一系列DLL的依赖关系。当我浏览到这个文件夹并获取例如“Microsoft.AspNetCore.Http.Abstractions.dll”程序集时,我看到它的版本为7.0.22.....这是有道理的。
奇怪的是,当我在此项目上单击“管理NuGet包”时,我发现没有已安装的NuGet包。看起来这种依赖机制与NuGet无关。
现在我想创建一个类库,将封装一些常见功能,我想在项目之间共享,但它需要从“Microsoft.AspNetCore.Http.Abstractions.dll”文件中定义的HttpContext类读取数据。那么我应该如何添加此依赖项?
通过在类库项目上使用“dotnet add package Microsoft.AspNetCore.App”命令添加它似乎是一种资源浪费,因为它会添加整个dll包,而我只关心.Http.Abstractons.dll及其直接依赖项。 此外,当我运行该命令时,Visual Studio会出现警告:
NETSDK1080 当目标为.NET Core 3.0或更高版本时,不需要将PackageReference添加到Microsoft.AspNetCore.App。如果使用Microsoft.NET.Sdk.Web,则共享框架将自动引用。否则,应该用FrameworkReference替换PackageReference。通过NuGet添加dll可以解决Visual Studio的问题,但是添加的程序集版本是2.2.0而不是dotnet包中的7.0.2。因此,在一个项目中引用的HttpContext与在另一个项目中引用的HttpContext是不同的。
请帮助我理解这个机制,以及如何将感兴趣的dll添加到我的项目中,以便能够在我的库中访问HttpContext。什么时候应该使用dotnet add package,什么时候应该使用NuGet包管理?有没有关于从.NET Framework 4.+到.NET 7在这个领域提升的好文章?
作为.NET用户已经有10年左右的时间了,我感到在最近的发展中迷失了方向,并且发现我在网上找到的官方文档几乎没有用处。
我尝试通过 "dotnet add package" 命令添加 Microsoft.AspNetCore.App 包 - Visual Studio 抱怨了,而且它拉取了整个程序集包,但我只关心 "Microsoft.AspNetCore.Http.Abstractions.dll"。
我尝试添加 "Microsoft.AspNetCore.Http.Abstractions" NuGet 包,但所添加的程序集版本与 WebAPI 项目中引用的完全不同。