wake-up-neo.com

Warum sagt mir Visual Studio, dass ich auf System.Private.CoreLib verweisen muss?

Ich probiere EF Core zum ersten Mal aus und habe eine sehr einfache MVC-App programmiert, um meine Füße nass zu machen. Ich verwende eine Methode zum Seeding der Datenbank, die im UnicornStore-Projekt gefunden wurde. Dort wird Code in Startup.cs geschrieben, um die Datenbank zu migrieren und dann eine Seed-Methode auszuführen.

Bevor sie die Seed-Methode aufrufen, führen sie diese Erweiterungsmethode DbContext aus, um zu prüfen, ob alle Migrationen angewendet wurden:

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();
        }
    }
}

Ich habe diese Methode in meine Anwendung eingefügt und alles funktioniert - der Code wird kompiliert und die Datenbank wird migriert und in einen Seed versetzt. In Visual Studio (2017 Enterprise) wird diese Zeile jedoch rot hervorgehoben:

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

Wenn ich über die rote Linie schwebe, sagt es mir:

Modul 'System.Private.CoreLib, Version = 4.0.0.0, Kultur = neutral, PublicKeyToken = foo 'sollte referenziert werden

Kann mir jemand sagen, warum ich diese Nachricht bekomme? Ich habe tatsächlich versucht, einen Verweis auf System.Private.CoreLib hinzuzufügen, um zu sehen, was passieren würde, und das hat eine Menge Fehler verursacht (undefined System.Object usw.). Es ist mir nie ein Anliegen, solche Dinge ungelöst zu lassen, falls sie später zurückkommen, um mich zu beißen. Daher wäre jede Entscheidung (oder eine Bestätigung, dass ich das hier lassen kann und die Nachricht ignorieren) sehr dankbar!

14
Jim

Hast du R # installiert? Möglicherweise ist dieses Problem aufgetreten: RSRP-464676

Wenn ja, versuchen Sie, R # auszusetzen, und prüfen Sie, ob die Probleme nicht mehr angezeigt werden.

14
kimpenhaus

Ich hatte das gleiche Problem. Ein Upgrade auf die neueste Version von Resharper hat das Problem behoben.

0
sevdalin

Nur als alternative Antwort scheint es, als ob mein alt-enter-Spam für glücklichen Erfolg mich dazu gebracht hat, einen Assembly-Verweis auf System.Private.CoreLib zu importieren, der meiner Meinung nach aus einem Threading-Namespace-Import-Fix stammt. Prüfen Sie, ob darauf verwiesen wurde.

0
Daniel Park