我们有依赖MVC的现有库,例如,提供自定义操作过滤器。这些库以Nuget的形式发布。
直到现在,我们只是从库中引用了Microsoft.AspNetCore.Mvc
,因此我们可以使用相应的类型(例如ActionFilterAttribute
)。但从ASP.NET Core 3开始,Microsoft停止发布许多indicated by the upgrade guide的Nuget程序包,其中Microsoft.AspNetCore.Mvc
。
从ASP.NET Core 3开始,依赖MVC的库应如何引用MVC?
答案 0 :(得分:1)
根据您提供的链接中的文档,您可以定位Microsoft.NET.Sdk.Web
SDK,该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
共享框架中没有包含您依赖的某些库吗?
答案 1 :(得分: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>