You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取迁移文件夹内生成的文件列表?GetAssembly()方法无效

获取迁移文件夹文件列表的可行方案

直接读取文件系统路径

迁移文件夹本质是项目内的物理目录,绕开程序集加载的问题,直接用文件系统API读取最直接:

// 开发环境测试用硬编码路径
var migrationFiles = Directory.GetFiles(@"../YourProjectName/Migrations", "*.cs");

// 运行时动态拼接路径(推荐)
var baseDir = AppContext.BaseDirectory;
var migrationDir = Path.Combine(baseDir, "Migrations");
var migrationFiles = Directory.GetFiles(migrationDir, "*.cs", SearchOption.TopDirectoryOnly);

借助EF Core的迁移元数据匹配文件

如果是EF Core的迁移,可先通过DbContext获取已注册的迁移名称,再对应到物理文件:

using var dbContext = new YourDbContext();
var migrationNames = dbContext.Database.GetMigrations();

var migrationDir = Path.Combine(AppContext.BaseDirectory, "Migrations");
var migrationFiles = migrationNames
    .Select(name => Path.Combine(migrationDir, $"{name}.cs"))
    .Where(File.Exists)
    .ToList();

修复GetAssembly()的使用问题

之前调用GetAssembly()失败,通常是迁移所在程序集未被当前进程加载,可尝试显式加载:

// 加载迁移程序集(替换为你的迁移程序集实际路径)
var migrationAssembly = Assembly.LoadFrom("./YourMigrationAssembly.dll");

// 获取所有迁移类型,反推对应文件名
var migrationTypes = migrationAssembly.GetTypes()
    .Where(t => typeof(Microsoft.EntityFrameworkCore.Migrations.IMigrationMetadata).IsAssignableFrom(t));

var migrationFiles = migrationTypes.Select(t => $"{t.Name}.cs").ToList();

内容的提问来源于stack exchange,提问作者Jayanth Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:32:33