📟.NET 8 專案 MSB3030「無法複製 appsettings.Development.json」:publish 巢狀遞迴的完整排錯與修正指南
重點摘要 你的 dotnet run / build 報錯 MSB3030:找不到要複製的 appsettings.Development.json 。 真正原因是: 專案把 publish/ (甚至 out/ )目錄也當成專案來源來「再發佈一次」 ,形成 publish\publish-...\publish-... 的 無限巢狀 與「來源檔不存在」。 兩步就好: 清掉殘留 :刪除 bin/ 、 obj/ 、 publish/ 。 改 .csproj :加 DefaultItemExcludes 排除 publish/out ,並「白名單」只處理根目錄的 appsettings*.json ,同時把 bin/obj/publish/out 從各 Items 移除。 問題現象(錯誤訊息) 你的主控台長這樣(節錄重點): error MSB3030: 無法複製檔案 C: \...\publish\publish-...\publish-...\appsettings.Development.json, 因為找不到檔案。 注意到那串超長路徑嗎? publish\publish-...\publish-... 一層套一層,就是自我遞迴的典型症狀。 為什麼會發生? ASP.NET Core 的 Microsoft.NET.Sdk.Web 會「自動收錄」很多檔案(Default Items)。 如果你或某個外部共用設定(例如 Directory.Build.targets/props )有這類萬用字元: **\*.json 、 **\*.* 或自訂 <Copy> / AfterPublish 把 publish 當「來源」 再複製一次 就可能把 上一次發佈產生的 publish/ 當作這次建置的 來源 ,造成: publish 裡面又包含 publish (無限巢狀) 尋找「來源檔」時,路徑越疊越長、實際又不存在 → MSB3030 最快解法(保險且通用) 1) 先清乾淨 這次改用 CMD 指令 與跨平台清理,與上一版不同寫法 :: Windows CMD rmdir /s /q .\bin rmdir /s /q .\o...