Почему Visual Studio говорит мне, что мне нужно ссылаться на System.Private.CoreLib?

Я впервые пробовал 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();
        }
    }
}

Я поместил этот же метод в свое приложение, и все работает - компилируется код и база данных переносится и высевается. Однако Visual Studio (2017 Enterprise) красная, подчеркивающая эту строку:

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

Если я навешиваю над красной линией, это говорит мне:

Модуль 'System.Private.CoreLib, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = foo 'должно быть указано

Может ли кто-нибудь сказать мне, почему я получаю это сообщение? Я действительно попытался добавить ссылку на System.Private.CoreLib, чтобы узнать, что произойдет, и это вызвало массу ошибок (undefined System.Object и т.д.). Мне никогда не нравится оставлять такие вещи, как это нерешенное, если они вернутся, чтобы укусить меня позже, так что любое разрешение (или подтверждение того, что я могу оставить это и проигнорировать сообщение) будет оценено!

Ответ 1

Установлен ли R #? Возможно, вы столкнулись с этой проблемой: RSRP-464676

Если это так, попробуйте приостановить R # и посмотреть, не исчезли ли проблемы.

Ответ 2

Как альтернативный ответ кажется, что мой счастливый спам alt-enter привел меня к тому, чтобы импортировать ссылку на сборку System.Private.CoreLib, которая, как мне кажется, была из исправления импорта пространства имен потоков. Проверьте, не указана ли эта ссылка.

Ответ 3

У меня была та же проблема. Обновление до последней версии Resharper исправило проблему.