剛入職時選了「ASP.NET 空網站」,發布時 bin 目錄下每個 .cs 都生成隨機命名的 DLL。上線後要改一行代碼,卻得重新上傳所有文件,效率極低。聽說「Web 應用程式」能把所有 .cs 打包成單一 DLL,到底該怎麼選?
| 維度 | 網站專案 | Web 應用程式 |
|---|---|---|
| 編譯模式 | 動態編譯:首次請求時由 ASP.NET 執行階段現場編譯 | 預編譯:開發階段在 VS 中編譯成單一 DLL |
| 代碼組織 | 無專案文件,目錄結構即專案 | 有 .csproj,MSBuild 管理依賴 |
| 部署產物 | 每個 .cs/.vb 生成一個隨機命名 DLL | 單一 專案名.dll + 預編譯視圖 |
| 修改上線 | 需替換全部 DLL 或源碼 | 僅替換主 DLL 即可 |
| 適合場景 | 小型、頻繁改動、非專業團隊 | 企業級、團隊協作、CI/CD、大型專案 |
若現有「網站專案」需遷移:
1. 新建 Web 應用程式專案
2. 將原目錄下 .aspx/.ascx/.master 等標記文件直接複製
3. 將 App_Code 下 .cs 移入 Models/Services/Controllers 資料夾
4. 修正命名空間、引用路徑
5. 刪除 App_Code、Bin 目錄,重新建置
微软官方詳細對比:ASP.NET Web Application vs Web Site
新項目無腦選 Web 應用程式。只有極簡單、單人維護、無 CI/CD 需求的臨時頁面才考慮網站專案。早選對專案類型,能省下無數個加班夜。