问题

Visual Studio打开了某个混合了多个版本.Net项目的解决方案。对某个使用EntityFrameworkCore的项目,在程序包管理控制台中,尝试用Scaffold-DbContext从数据库生成实体模型,报错如下:

PM> Scaffold-DbContext -Provider Microsoft.EntityFrameworkCore.SqlServer `-Connection 'Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=TestDb' `-ContextDir 'Storage\SqlServer' -Context 'DbContext' ·-OutputDir 'Storage\SqlServer'
Build started...
Build succeeded.
System.IO.FileNotFoundException: 未能加载文件或程序集“netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项。系统找不到指定的文件。
文件名:“netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”在 System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type)在 System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)在 System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)在 System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)在 System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)在 System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)在 System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)在 Microsoft.EntityFrameworkCore.Tools.AppDomainOperationExecutor..ctor(String assembly, String startupAssembly, String projectDir, String dataDirectory, String rootNamespace, String language, String[] remainingArguments)在 Microsoft.EntityFrameworkCore.Tools.Commands.ProjectCommandBase.CreateExecutor(String[] remainingArguments)在 Microsoft.EntityFrameworkCore.Tools.Commands.DbContextScaffoldCommand.Execute(String[] args)在 Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String[] args)在 Microsoft.EntityFrameworkCore.Tools.Program.Main(String[] args)警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。未能加载文件或程序集“netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项。系统找不到指定的文件。

但有时候又能成功生成实体模型。系统上.Net版本齐全,.nuget目录里各版本Microsoft.EntityFrameworkCore齐全。

解决方法

一般搜索到的解法都是让安装正确的.Net版本,这个通常应该是已经做到了的,不再赘述,反正不能解决问题。
Scaffold-DbContext需要解决方案里有启动项目,可能是用来读取一些配置之类的。在混合了多个.Net版本的解决方案里,只有当解决方案能正确编译通过、启动项的.Net版本选择符合当前项目引用的Microsoft.EntityFrameworkCore的要求、并且启动项引用了同一版本的Microsoft.EntityFrameworkCore.Design时,才能正确生成实体模型。
所以可靠的解法是,给Scaffold-DbContext提供-Project参数指定要生成模型的项目、提供-StartupProject参数指定参考启动项目。例如前述报错命令行可以改成

PM> Scaffold-DbContext -Provider Microsoft.EntityFrameworkCore.SqlServer `-Connection 'Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=TestDb' `-ContextDir 'Storage\SqlServer' -Context 'DbContext' ·-OutputDir 'Storage\SqlServer' `-Project DbClasses -StartupProject DbCli

以保证生成实体步骤与当前活动项目无关。

Scaffold-DbContext 报“未能加载文件或程序集“netstandard”的解法相关推荐

  1. C#总是报未能加载文件或程序集

    脑子一热,想用没学过的C#语言搞两个桌面应用程序. 弄了两个C#软件,开发机器上运行的好好的,但是打包成可用软件,总是报未能加载文件或程序集.我查看是版本不对,已有的程序集和要的程序集的版本号匹配不对 ...

  2. C#错误:CS0012 未能加载文件或程序集“netstandard, Version=2.0.0.0, Culture=neutral解决方案

    错误如题所示,找了很多解决方案都没用,最后看到一个帖子,结合自己的实际情况进一步研究终于解决,将解决过程记录在这里. (1).NET Framework版本调整 这部分受下面链接启发: [.NET S ...

  3. .netFramewo 4.0软件报 未能加载文件或程序集“System.Core, Version=2.0.5.0错误处理

    前一段时间开发了一个软件,在部分用户电脑报错: 未能加载文件或程序集"System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToke ...

  4. vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法...

    原先本地项目版本(4.0.0.1)高于服务器版本(4.0.0.0),本地项目改成服务器版本4.0.0.0时,发布后的项目报这个错误 出现的问题:原先项目编译后可运行,发布在IIS后就报这个错误 分析问 ...

  5. 未能加载文件或程序集“Poderosa.Core

    https://github.com/poderosaproject/poderosa上下载的一个开源工程,程序是在VS2012上编译的,然后VS2015转换后编译失败,报"未能加载文件或程 ...

  6. 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法

    未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法 参考文章: (1)未能加载文件或程序集 Newtonsoft.Json, Version=4. ...

  7. C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集

    C# 调用NationalInstruments的dll报错问题 问题原因:dll版本不匹配导致的,需要做如下操作解决问题 未能加载文件或程序集"NationalInstruments.Co ...

  8. mysql core 文件_MySQL未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决...

    在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是启动程序后就报错. "/& ...

  9. 未能加载文件或程序集“Antlr3.Runtime”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))解决方法。...

    前一天晚上VS卡死,强制关闭后就没理他,然后晚上回去又经历了一次过热断电关机和一次蓝屏,当然我也不知道这些和他有没有关联,第二天早上打开程序出现了:"未能加载文件或程序集"Antl ...

最新文章

  1. Linux Apache 怎么修改工作模式
  2. jsp需要多少java基础_Java基础——JSP(一)
  3. 获取和保存当前屏幕的截图 实现的C++代码如下
  4. numpy版本过高的解决方案
  5. Repeater绑定ArrayList数据源
  6. RS信号制java程序,java – 如何部署一个JAX-RS应用程序?
  7. scrapy操作指南
  8. 算法笔记_面试题_10.所有可能的满二叉树
  9. SQL Server常用查询指令
  10. 四阶龙格库塔法RK4在求解陀螺仪位姿中的应用
  11. 最强PostMan使用教程(7)postman做数字签名认证
  12. android模拟器安装教程视频教程,安卓模拟器安装教程 安卓模拟器怎么安装
  13. ODM、JDM、OBM 、OEM概念的区别与理解
  14. TIKTOK海外直播公会如何申
  15. Vue组件的生命周期以及钩子函数的作用
  16. 大数据学习:大数据就业前景和就业方向
  17. Hack The Box - Access Writeup
  18. 计算机与代数---如何计算log---实现[2]
  19. laravel 发送邮件随记
  20. 系统或应用计算机指令的术语叫什么意思,[计算机软件及应用]BPM术语解释.doc

热门文章

  1. protobuf 自定义extend
  2. 免费的QQ靓号!!!!!!
  3. 功能安全标准ISO26262-2翻译
  4. 树莓派+blinker物联网平台+阿里云服务器实现app远程摄像头监控
  5. 让你永远赢得Popcap bookworm
  6. 雨林木风GhostXPSP3 YN20.0[NTFS]
  7. 黑莓StreamConnection中deviceside参数的使用
  8. Vux 适用于PopupPicker组件的最新所有省市区data
  9. I love you three thousand times
  10. 鸿蒙碎片八零,洪荒:我继承了鸿蒙神墓