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

时间:2017-05-25 14:35:07

标签: visual-studio asp.net-core asp.net-core-mvc entity-framework-core

我第一次尝试使用EF Core并编写了一个非常简单的MVC应用程序来让我的脚湿透。我正在使用一种方法来播种UnicornStore project中找到的数据库,在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);

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

  

Module&#39; System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,   公钥= FOO&#39;应引用

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

4 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:0)

就像另一个回应一样,似乎我的幸福快乐alt-enter垃圾邮件让我导入了System.Private.CoreLib的汇编引用,我认为这是来自线程命名空间导入修复。检查是否已被引用。

答案 2 :(得分:0)

我遇到了同样的问题。升级到最新版本的Resharper解决了这个问题。

答案 3 :(得分:0)

SAFE-Stack的服务器模板代码在VS Code(vscode)中也有类似的问题。通过将<Reference include="netstandard" />添加到关联的fsproj项目文件sugggested on github here可以解决此问题,如下所示:

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