我的解决方案有不同的项目(都是 dotnet 7):
我正在使用代码优先方法使用
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 文件。
请建议如何调试/解决此错误。