执行 efbundle(post dotnet ef migrations budle)无法加载 Microsoft.Extensions.Configuration.FileExtensions 文件/nuget

问题描述 投票:0回答:0

我的解决方案有不同的项目(都是 dotnet 7):

  1. 核心
  2. DataAccess(DbContext源码项目)
  3. 服务
  4. 用户界面

我正在使用代码优先方法使用

dotnet ef
version 7.0.4

连接字符串来自使用 Microsoft.Extensions.DependencyInjection 的 UI 层。 对于迁移步骤,连接字符串直接从 UI 层的 appsettings.json 中读取,如下所示:

        public MyContext CreateDbContext(string[] args)
        {
            IConfigurationRoot configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).
                AddJsonFile(@Directory.GetCurrentDirectory() + ".<UI project path>.//appsettings.json").Build();

            var connectionString = configuration.GetConnectionString("MyAppConnection");
...

当我手动进行迁移并使用 dotnet ef cli 命令更新数据库时一切正常。

我开始使用 dotnet ef migrations bundles 从发布管道迁移。 当我使用

dotnet ef migrations bundle -f -v --self-contained
创建捆绑包时
efbundle.exe
生成

但是在执行

efbudle.exe
的时候,出现错误如下:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.IO.FileNotFoundException:
File name: 'Microsoft.Extensions.Configuration.FileExtensions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
   at DataAccess.Dbcontexts.DesignTimeDbContextFactory.CreateDbContext(String[] args)
...

我试过使用不同的选项来生成包:

1)  dotnet ef migrations bundle -f -v
2)  dotnet ef migrations bundle --self-contained --startup-project "<Path To UI Project>\API.csproj" -f -v
3)  dotnet ef migrations bundle --self-contained --context MyContext --project "<Path To DataAccess Project>\dataAccess.csproj" --startup-project "<Path To UI Project>\API.csproj" -f -v

并执行efbundle:

.\efbundle.exe --connection 'MyConnectionString'
.\efbundle.exe

每次无法加载其配置 nuget 文件。

请建议如何调试/解决此错误。

c# .net entity-framework nuget-package entity-framework-migrations
© www.soinside.com 2019 - 2024. All rights reserved.