我可以从构建中排除迁移创建的 Designer.cs 文件吗?

Can I exclude migration-created Designer.cs files from the build?

我目前正在处理大量数据(大量模型、存储过程、数据移动,对于这个问题最重要的是迁移)后端 API。经过 10 周的开发工作,我们已经(通过迁移)生成了 141 Designer.cs 个文件,其中包含 522,713 个 LoC。

在此过程中,我们注意到我们的构建时间膨胀了。现在,在单个文件更改后,干净重建需要 2 分钟,服务器重启(通过 dotnet watch run)需要 4 分钟。 IDE 中的自动完成几乎一文不值。代码分析器需要几分钟时间才能识别出我们已修复文件中的编译问题并停止将其标记为错误。

出于好奇,我删除了所有 Designer 文件。我的干净构建下降到 15 秒。在阅读中,听起来我们可以squash our migrations。也就是说,在我开始这条路线之前,我想检查一下:处理自动生成的、与迁移相关的 Designer 文件中的代码膨胀的最佳方法是什么?

不要删除设计器文件,它会导致在应用迁移时发生意想不到的事情。

尝试将它们移到另一个项目中。将该项目的输出目录设置为与您的主应用程序相同:

<PropertyGroup>
  <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath>
</PropertyGroup>

然后告诉 EF 在哪里可以找到迁移:

services.AddDbContext<BlogContext>(
    options => options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection"),
        x => x.MigrationsAssembly("MyMigrationsAssembly")));

如果您在运行时应用迁移(不推荐),您需要记住在 运行 应用程序之前构建迁移项目。