为什么Visual Studio告诉我需要引用System.Private.CoreLib?

Jim*_*Jim 15 visual-studio entity-framework-core asp.net-core-mvc asp.net-core

我是第一次尝试使用EF Core并编写了一个非常简单的MVC应用程序来让我的脚湿透.我正在使用一种方法来播种UnicornStore项目中的数据库,在该项目中,他们编写了一些代码Startup.cs来迁移数据库,然后运行种子方法.

在调用种子方法之前,他们运行此DbContext扩展方法来检查是否已应用所有迁移:

using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;

namespace UnicornStore.Models
{
    public static class DbContextExtensions
    {
        public static bool AllMigrationsApplied(this DbContext context)
        {
            var applied = context.GetService<IHistoryRepository>()
                .GetAppliedMigrations()
                .Select(m => m.MigrationId);

            var total = context.GetService<IMigrationsAssembly>()
                .Migrations
                .Select(m => m.Key);

            return !total.Except(applied).Any();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用了相同的方法,一切正常 - 代码编译,数据库被迁移和播种.但是,Visual Studio(2017 Enterprise)是红色的下划线:

context.GetService<IMigrationsAssembly>()
                    .Migrations
                    .Select(m => m.Key);
Run Code Online (Sandbox Code Playgroud)

如果我将鼠标悬停在红线上,它会告诉我:

应该引用模块'System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = foo'

谁能告诉我为什么我收到这条消息?我实际上试图添加一个引用来System.Private.CoreLib查看会发生什么,这导致了大量的错误(未定义System.Object等).我永远不会觉得这样的事情没有得到解决,以防他们以后回来咬我,所以任何解决方案(或者我可以留下这个并且忽略这个消息的确认)将不胜感激!

kim*_*aus 15

你安装了R#吗?您可能遇到过这个问题:RSRP-464676

如果是这样,请尝试暂停R#并查看是否已再次显示问题.