web-dev-qa-db-ja.com

Visual StudioがSystem.Private.CoreLibを参照する必要があると通知するのはなぜですか?

私は初めてEF Coreを試しましたが、非常にシンプルなMVCアプリをコーディングして足を濡らしました。 nicornStoreプロジェクト にあるデータベースをシードする方法を使用しています。ここでは、データベースを移行するために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 = neutral、PublicKeyToken = foo'を参照する必要があります

なぜこのメッセージが表示されるのですか?実際に何が起こるかを確認するためにSystem.Private.CoreLibへの参照を追加しようとしましたが、これにより大量のエラーが発生しました(未定義のSystem.Objectなど)。このようなものを後で私に噛まれて戻ってきた場合に備えて、このようなものを未解決のままにしておくことは決して快適ではありません。

15
Jim

R#はインストールされていますか?この問題が発生している可能性があります: RSRP-464676

その場合は、R#を一時停止して、問題が表示されなくなったかどうかを確認してください。

15
kimpenhaus

私も同じ問題を抱えていました。 Resharperを最新バージョンにアップグレードすると、問題が修正されました。

0
sevdalin

代わりの応答として、幸せなalt-enterスパムがSystem.Private.CoreLibへのアセンブリ参照をインポートするように思われたようです。これは、スレッド化名前空間インポートの修正によるものだと思います。これが参照されているかどうかを確認してください。

0
Daniel Park

SAFE-StackのサーバーテンプレートコードでVSコード(vscode)に同様の問題がありました。次のように、関連するfsprojプロジェクトファイルに<Reference include="netstandard" />を追加することで問題が解決したようです githubで推奨

<Project Sdk="Microsoft.NET.Sdk.Web">
  ..
  <ItemGroup>
    ..
    <Reference include="netstandard" />
    ..
  </ItemGroup>
</Project>
0
George