Microsoft.AspNetCore.Mvc依赖性和ASP.NET Core 3

时间:2019-09-26 06:15:00

标签: .net-core-3.0 asp.net-core-3.0

我们有依赖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?

2 个答案:

答案 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.SdkMicrosoft.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,并使用条件来使用PackageReferenceFrameworkReference

<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>