【问题标题】:Microsoft.AspNetCore.Mvc dependency and ASP.NET Core 3Microsoft.AspNetCore.Mvc 依赖和 ASP.NET Core 3
【发布时间】:2019-09-26 14:47:44
【问题描述】:
我们现有的库依赖于 MVC,例如提供自定义操作过滤器。这些库作为 Nuget 发布。
到目前为止,我们只是从库中引用了Microsoft.AspNetCore.Mvc,以便我们可以使用各自的类型(例如ActionFilterAttribute)。但从 ASP.NET Core 3 开始,微软停止将许多 Nuget 包发布为indicated by the upgrade guide,其中包括Microsoft.AspNetCore.Mvc。
依赖 MVC 的库应该如何引用 MVC,从 ASP.NET Core 3 开始?
【问题讨论】:
标签:
.net-core-3.0
asp.net-core-3.0
【解决方案1】:
升级指南中的library multi-targeting 部分对此进行了概述:
该库必须同时面向 .NET Core 3 和 .NET Standard 2.0,并使用条件来使用 PackageReference 或 FrameworkReference:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp3.0;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.2" />
</ItemGroup>
</Project>
【解决方案2】:
根据您提供的链接中的文档,您可以定位Microsoft.NET.Sdk.Web SDK,它将隐式引用Microsoft.AspNetCore.App 共享框架:
以Microsoft.NET.Sdk.Web SDK 为目标的项目隐式引用Microsoft.AspNetCore.App 框架。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
...
</Project>
或明确用于其他 SDK:
以Microsoft.NET.Sdk 或Microsoft.NET.Sdk.Razor SDK 为目标的项目应将显式FrameworkReference 添加到Microsoft.AspNetCore.App。
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
...
</Project>
您依赖的某些库是否未包含在Microsoft.AspNetCore.App 共享框架中?