我在 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 的。
现在我想创建一个类库,它将封装一些我想在项目之间共享的常用功能,但它需要从 HttpContext 类读取数据,该类在“Microsoft.AspNetCore.Http.Abstractions.dll”中定义文件。那么我应该如何添加这个依赖呢?
在类库项目上通过“dotnet add package Microsoft.AspNetCore.App”命令添加它似乎是一种资源浪费,因为它添加了整个 dll 包,而我只关心 .Http.Abstractons.dll 及其直接依赖项。另外,当我运行命令时,Visual Studio 抱怨警告:
NETSDK1080 当面向 .NET Core 3.0 或更高版本时,不需要对 Microsoft.AspNetCore.App 的 PackageReference。如果使用Microsoft.NET.Sdk.Web,则会自动引用共享框架。否则,PackageReference 应替换为 FrameworkReference”。
通过 NuGet 添加 dll 是可行的,因为 Visual Studio 不再抱怨,但添加的程序集版本是 2.2.0,而不是 dotnet 包中的 7.0.2。因此从技术上讲,一个项目中引用的 HttpContext 与另一个项目中引用的 HttpContext 是不同的。
请帮助我理解这种机制,以及我应该如何将感兴趣的 dll 添加到我的项目中,以便能够访问我的库中的 HttpContext。何时应使用 dotnet add package 以及何时应使用 NuGet 包管理?有没有关于这个主题的好读物可以让我快速了解该领域从 .NET Framework 4.+ 到 .NET 7 的情况?
作为过去 10 …