【问题标题】:Can I exclude migration-created Designer.cs files from the build?我可以从构建中排除迁移创建的 Designer.cs 文件吗?
【发布时间】:2021-01-04 10:20:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net-core entity-framework-core ef-core-3.1


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2017-10-13
      • 2021-06-01
      • 2019-12-18
      • 2011-02-26
      相关资源
      最近更新 更多