mka*_*ski 4 nuget .net-core asp.net-core asp.net-core-webapi
我在 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 年左右的 .NET 用户,我对最近的发展感到非常迷失,并且在网上找到的官方文档几乎没有什么用处。
我尝试通过“dotnet add package”命令添加 Microsoft.AspNetCore.App 包 - Visual Studio 抱怨,而且它提取了整个程序集包,但我只关心“Microsoft.AspNetCore.Http.Abstractions.dll”。
我尝试添加“Microsoft.AspNetCore.Http.Abstractions”NuGet 包,但添加的程序集版本与 WebAPI 项目中引用的版本完全不同。
奇怪的是,当我在这个项目上单击“管理 NuGet 包”时,我发现绝对没有安装 NuGet 包。
这些依赖项由项目 SDK 确定,可以在 .csproj 的根元素中找到:
<Project Sdk="Microsoft.NET.Sdk.Web">
...
</Project>
Run Code Online (Sandbox Code Playgroud)
那么我应该如何添加这个依赖呢?
对于最新版本的 .NET,您应该通过 引用相应的 SDK FrameworkReference,例如要引用 ASP.NET Core 组件,您应该添加到文档(和警告)中提到的<FrameworkReference Include="Microsoft.AspNetCore.App"/>库项目.csproj文件中:
<Project Sdk="Microsoft.NET.Sdk">
<!--... rest of file-->
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<!--... rest of file-->
</Project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3063 次 |
| 最近记录: |