Scaffold-DbContext 报“未能加载文件或程序集“netstandard”的解法
问题
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”的解法相关推荐
- C#总是报未能加载文件或程序集
脑子一热,想用没学过的C#语言搞两个桌面应用程序. 弄了两个C#软件,开发机器上运行的好好的,但是打包成可用软件,总是报未能加载文件或程序集.我查看是版本不对,已有的程序集和要的程序集的版本号匹配不对 ...
- C#错误:CS0012 未能加载文件或程序集“netstandard, Version=2.0.0.0, Culture=neutral解决方案
错误如题所示,找了很多解决方案都没用,最后看到一个帖子,结合自己的实际情况进一步研究终于解决,将解决过程记录在这里. (1).NET Framework版本调整 这部分受下面链接启发: [.NET S ...
- .netFramewo 4.0软件报 未能加载文件或程序集“System.Core, Version=2.0.5.0错误处理
前一段时间开发了一个软件,在部分用户电脑报错: 未能加载文件或程序集"System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToke ...
- vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法...
原先本地项目版本(4.0.0.1)高于服务器版本(4.0.0.0),本地项目改成服务器版本4.0.0.0时,发布后的项目报这个错误 出现的问题:原先项目编译后可运行,发布在IIS后就报这个错误 分析问 ...
- 未能加载文件或程序集“Poderosa.Core
https://github.com/poderosaproject/poderosa上下载的一个开源工程,程序是在VS2012上编译的,然后VS2015转换后编译失败,报"未能加载文件或程 ...
- 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法
未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法 参考文章: (1)未能加载文件或程序集 Newtonsoft.Json, Version=4. ...
- C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集
C# 调用NationalInstruments的dll报错问题 问题原因:dll版本不匹配导致的,需要做如下操作解决问题 未能加载文件或程序集"NationalInstruments.Co ...
- mysql core 文件_MySQL未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决...
在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是启动程序后就报错. "/& ...
- 未能加载文件或程序集“Antlr3.Runtime”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))解决方法。...
前一天晚上VS卡死,强制关闭后就没理他,然后晚上回去又经历了一次过热断电关机和一次蓝屏,当然我也不知道这些和他有没有关联,第二天早上打开程序出现了:"未能加载文件或程序集"Antl ...
最新文章
- Linux Apache 怎么修改工作模式
- jsp需要多少java基础_Java基础——JSP(一)
- 获取和保存当前屏幕的截图 实现的C++代码如下
- numpy版本过高的解决方案
- Repeater绑定ArrayList数据源
- RS信号制java程序,java – 如何部署一个JAX-RS应用程序?
- scrapy操作指南
- 算法笔记_面试题_10.所有可能的满二叉树
- SQL Server常用查询指令
- 四阶龙格库塔法RK4在求解陀螺仪位姿中的应用
- 最强PostMan使用教程(7)postman做数字签名认证
- android模拟器安装教程视频教程,安卓模拟器安装教程 安卓模拟器怎么安装
- ODM、JDM、OBM 、OEM概念的区别与理解
- TIKTOK海外直播公会如何申
- Vue组件的生命周期以及钩子函数的作用
- 大数据学习:大数据就业前景和就业方向
- Hack The Box - Access Writeup
- 计算机与代数---如何计算log---实现[2]
- laravel 发送邮件随记
- 系统或应用计算机指令的术语叫什么意思,[计算机软件及应用]BPM术语解释.doc