为什么我不能使用 Microsoft.AspNetCore.Mvc;在我的单元测试项目中?

Why I couldn't use Microsoft.AspNetCore.Mvc; in my unit testing project?

我创建了一个 asp.net 核心 mvc 项目,还创建了一个单元测试项目 下面是单元测试项目的代码:

using System;
using Microsoft.AspNetCore.Mvc;  // error, type or namespace is missing
using Xunit;

namespace Project.Tests
{
    public class UnitTest1
    { 

        [Fact]
        public void Test1()
        {
          ...
        }
    }
}

不太明白,以前创建单元测试项目都没有问题,为什么这次不能访问Microsoft.AspNetCore.Mvc

您无法在单元测试项目中访问 Microsoft.AspNetCore.Mvc,因为单元测试项目是一个单独的项目,其中不包含库 Microsoft.AspNetCore.Mvc

要解决此问题,请将此程序集的引用添加到您的项目中。

要将 Microsoft.AspNetCore.Mvc 程序集添加到您的单元测试项目:

  • 右键单击单元测试项目的引用

  • 单击“管理 NuGet 程序包”,搜索 Microsoft.AspNetCore.Mvc 并安装它

你真的需要在单元测试项目中引用这个程序集吗?

  • 如果不是,则从 UnitTest1 class
  • 中删除其引用

如果您在 VS 2019 更新 16.4.0 或更高版本上基于 .NET Core 3.0/3.1 创建单元测试,您只需在单元测试的 csproj 中添加 FrameworkReference 并包含 [=19 的 FrameworkReference =] 核心。无需引用 ASP.NET 核心的 nuget。

使用 ASP.NET 核心参考在您的 csproj 中添加 FrameworkReference 非常简单,例如:

<ItemGroup>
   <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

有关 FrameworkReference 的详细信息,另请参阅 https://docs.microsoft.com/en-us/dotnet/core/compatibility/aspnetcore