执行Entity Framework enable-migrations命令未生成文件夹且报错求助
问题描述
运行Entity Framework的enable-migrations命令时,未生成Migrations文件夹,同时抛出以下错误:
PM> enable-migrations System.Reflection.TargetInvocationException: 调用目标发生异常。---> System.IO.FileLoadException: 无法加载文件或程序集“part22TravelTripProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或其依赖项之一。不支持此操作。(HRESULT异常返回: 0x80131515) ---> System.NotSupportedException: 尝试从网络位置加载程序集,这会导致在早期.NET Framework版本中被沙盒处理。此.NET Framework版本默认不启用CAS策略,因此该加载操作可能不安全。如果不打算对该程序集进行沙盒处理,请启用loadFromRemoteSources开关。 --- 内部异常堆栈跟踪结束 --- 位置: System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 位置: System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) 位置: System.Reflection.Assembly.Load(AssemblyName assemblyRef) 位置: System.Data.Entity.Infrastructure.Design.Executor..ctor(String assemblyFile, IDictionary`2 anonymousArguments) --- 内部异常堆栈跟踪结束 --- 位置: System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 位置: System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 位置: System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) 位置: System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 位置: 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) 位置: System.Data.Entity.Tools.AppDomainExecutor..ctor(String assembly, String dataDirectory, String configurationFile, String rootNamespace, String language) 位置: System.Data.Entity.Tools.Commands.ProjectCommandBase.CreateExecutor() 位置: System.Data.Entity.Tools.Commands.MigrationsEnableCommand.Execute() 位置: Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String[] args) 位置: System.Data.Entity.Tools.Program.Main(String[] args) 调用目标发生异常。
已检查NuGet包(包括Entity Framework版本),并尝试过常见解决方案,但问题仍未解决。
解决方案
1. 解除程序集的网络锁定标记
如果项目从压缩包、网盘或网络共享目录获取,程序集会被标记为来自网络:
- 找到项目输出目录中的
part22TravelTripProject.dll文件,右键选择「属性」 - 在「常规」选项卡底部,点击「解除锁定」(若该选项存在),点击「确定」保存
2. 在配置文件中启用loadFromRemoteSources
修改项目的app.config(桌面项目)或web.config(Web项目):
- 打开配置文件,在
<configuration>节点内添加以下代码:<runtime> <loadFromRemoteSources enabled="true" /> </runtime> - 保存文件,重新生成项目
3. 清理并重新生成解决方案
- 在Visual Studio中依次执行:「生成」→「清理解决方案」→「生成」→「重新生成解决方案」
- 打开Package Manager Console,再次运行
enable-migrations命令
4. 迁移项目到本地磁盘(可选)
如果项目存储在网络共享目录、OneDrive等同步目录,将整个项目文件夹移动到本地磁盘(如C:\Projects),避免加载时的安全限制
内容的提问来源于stack exchange,提问作者İrem Ertürk 1
相关产品推荐
相关产品推荐

