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

Posted

技术标签:

【中文标题】为啥 Visual Studio 告诉我需要引用 System.Private.CoreLib?【英文标题】:Why is Visual Studio telling me I need to reference System.Private.CoreLib?为什么 Visual Studio 告诉我需要引用 System.Private.CoreLib? 【发布时间】:2017-05-25 14:35:07 【问题描述】:

我是第一次尝试 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);

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

模块'System.Private.CoreLib,版本=4.0.0.0,文化=中性, PublicKeyToken=foo' 应该被引用

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

作为替代响应,似乎我的happy-go-lucky alt-enter 垃圾邮件让我导入了对System.Private.CoreLib 的程序集引用,我认为这是来自线程命名空间导入修复。检查是否已被引用。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

在使用 SAFE-Stack 的服务器模板代码的 VS Code (vscode) 中遇到了类似的问题。通过将&lt;Reference include="netstandard" /&gt; 添加到关联的fsproj 项目文件sugggested on github here 中,问题似乎得到了解决,如下所示:

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

【讨论】:

以上是关于为啥 Visual Studio 告诉我需要引用 System.Private.CoreLib?的主要内容,如果未能解决你的问题,请参考以下文章

如图,别人的vs(visual studio)中有显示引用,为啥我的vs没有?是需要设置的吗?

为啥我的命名空间引用在 Visual Studio 中不断中断?

为啥我们在 Visual Studio 2013 中引用 C++ 项目?

为啥按值传递 string_view?为啥 Visual Studio 不能对此进行优化?

为啥在 Visual Studio 中构建失败,因为它无法从引用的程序集中解析命名空间?

为啥我在 Visual Studio 2008 的工具下没有调试选项?