.NET AspireでAppHostを起動している状態で、そのままWeb APIプロジェクトに対してdotnet efコマンドを叩こうとすると、当該プロジェクトを既にAppHostがロックしているためエラーになります
The process cannot access the file 'xxx.exe' because it is being used by another process. [xxx.csproj]
以下の手順を行えば回避が可能です。
Web APIの停止
まず、AspireのWeb画面からWeb APIを停止します
PostgreSQLコンテナの接続情報を調べる
AspireのWeb画面から、コンテナの接続情報を調べます
Connection Stringの設定
Web APIのProgram.csを書き換えて、AspireからConnectionStringが取れない場合は
手動設定したConnection Stringを参照するようにします
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("xxxxx")
?? "Host=localhost;Database=xxxxx;Port=xxxxx;Username=postgres;Password=xxxxx"));
dotnet ef でやりたいことの実行
dotnet ef database update --project xxx --startup-project xxx --verbose
Web APIの起動
AspireのWeb画面からWeb APIを起動します
もう少し、スマートな回避方法はないのでしょうか。。