您必须添加对程序集 mscorlib 的引用,版本=4.0.0

Posted

技术标签:

【中文标题】您必须添加对程序集 mscorlib 的引用,版本=4.0.0【英文标题】:You must add a reference to assembly mscorlib, version=4.0.0 【发布时间】:2016-09-24 21:53:43 【问题描述】:

我在将 Web 项目从 RC1 迁移到 RC2 时遇到了一些问题。当我切换时,我在整个项目中遇到了一堆这样的错误。

类型“Func”在未引用的程序集中定义。您必须添加对程序集 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 的引用

看起来所有的 linq 函数和 lambda 表达式都不起作用。

这是我的project.json 文件的样子:

  "frameworks": 
    "netcoreapp1.0": 
      "dependencies": 
        "System.Linq": "4.1.0-rc2-24027"
      ,
      "imports": [ "net451", "portable-net45+win8" ]
    
  ,
  "dependencies": 
    "NETStandard.Library": "1.5.0-rc2-24027",
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final",
    "System.ComponentModel.Annotations": "4.1.0-*"
  

任何想法这意味着什么?我试过运行dotnet restore,没有帮助。

【问题讨论】:

我无法重现此错误。你能分享你的整个 project.json 吗? 我在使用 imports 参数时遇到了类似的问题。尝试完全删除它或将 net451 更改为 dnx451 @Negorath 好主意,还可以考虑查看 new RC2 Web 应用程序中添加的内容。导入部分是"dotnet5.6", "dnxcore50", "portable-net45+win8" 【参考方案1】:

我遇到了同样的问题,并将以下包添加到我的 project.json 依赖项中为我修复了它:

"Microsoft.NETCore.Portable.Compatibility": "1.0.1-rc2-24027",

此包支持与基于 mscorlib 的 PCL 的兼容性。

【讨论】:

添加 1.0.1 版让我克服了这个错误。谢谢。 有同样的问题,但我仍然有 1 个错误Reference to type 'IListSource' claims it is defined in 'System', but it could not be found. 这也适用于从 ASP.NET Core 1.1 应用程序中引用使用 .NET Framework4+ 构建的外部项目。 救命稻草 - 在我找到这个之前,我已经对一个开源 repo 进行了 PR,将它们移植到 .NET Core。但不能为所有人做到这一点 这个!!!三天的谷歌搜索,我仍然无法在 Visual Studio 中构建(尽管可以从 dotnet build 构建)。添加Microsoft.NETCore.Portable.Compatibility 终于修复了它,我在其他任何地方都没有遇到过这个解决方案(在建议编辑 project.json 的无数过时文章中)。【参考方案2】:

事实上,问题在于一个旧的库,它需要一个 asp.net 4.0 或 4.5 版本(低于 Core)。

微软通过安装闲置的 NuGet 包为其提供了解决方案。

Microsoft.NETCore.Portable.Compatibility

这样您就可以使用旧库运行您的代码。

【讨论】:

【参考方案3】:

删除解决方案文件夹中的 .csproj.user as per in the Screenshot。 从解决方案资源管理器中卸载项目。 重新加载项目并构建一次。这对我有用。

【讨论】:

这对我在 VS2019 中适用于 MVC 5 .NET Framework 4.8 Web 应用程序。谢谢。 这里和伊恩一样。它解决了 VS2019/FW 4.8/MVC5 上的问题。谢谢【参考方案4】:

当我使用模板类库(.NET 标准) 创建一个新项目并将一些我想重复使用的代码移植到其中时,我遇到了这个错误。

我创建了一个新项目类库 (.NET Framework) 并将代码移到那里,它没有任何问题。

【讨论】:

【参考方案5】:

我在一个单元测试项目中工作时突然遇到了这个错误。尝试了前面提到的建议,例如卸载和重新加载项目、重建等。最终只需要重新启动 Visual Studio - 您是否尝试将其关闭然后再次打开 :-) VS 16.11 版.5

【讨论】:

【参考方案6】:

我没有代表发表评论,但 Matt Kemp 的帖子引出了我的解决方案。就我而言,它使用的是 Class Library(.Net Standard) 而不是 Android Class Library (Xamarin)

【讨论】:

请提供代码而不是写两行代码,即使您没有声誉,您也可以通过回答但提供示例来提供帮助。【参考方案7】:

mscorlib 参考是默认添加的,但这似乎是一个 Visual Studio 参考问题。我删除了我的项目并创建了一个新项目,然后它运行良好。

【讨论】:

以上是关于您必须添加对程序集 mscorlib 的引用,版本=4.0.0的主要内容,如果未能解决你的问题,请参考以下文章

您必须添加对程序集 'netstandard, Version=2.0.0.0 的引用

VS用C#写的程序,在引用里没有mscorlib,但是可以使用该程序集里的内容,怎么回事?

部署到 Azure 网站时,您必须向 System.Runtime... 添加引用

c#引用其它程序的程序集时报错

奇怪错误 - CS0012:类型x在未引用的程序集中定义

类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Linq, Version=4.0.0.0, Culture=neu