每次建置自動產生版本號,`AssemblyInfo.cs` 設定:
[assembly: AssemblyVersion("1.0.*")] // 自動生成 Build/Revision
// 或手動控制
[assembly: AssemblyVersion("1.2.3.4")]
[assembly: AssemblyFileVersion("1.2.3.4567")]
強名稱 = 簡單名稱 + 版本 + 文化特性 + 公開金鑰Token + 數位簽章。優勢:
產生金鑰檔:`sn -k MyCompany.snk` → 專案屬性 → 簽署 → 選擇金鑰檔。遲簽 (Delay Sign) 適用建置伺服器環境。
public class ResourceHolder : IDisposable
{
private IntPtr _handle;
private bool _disposed;
~ResourceHolder() => Dispose(false);
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (_disposed) return;
if (disposing) { /* 釋放受控資源 */ }
ReleaseUnmanaged(); // 釋放非受控
_disposed = true;
}
}
所有實作 `IDisposable` 的物件 (`SqlConnection`、`FileStream`、`Graphics`、`Bitmap`、`HttpClient` 等) **務必包在 `using` 中**,即使發生例外也能正確釋放。
// 差
string s = "";
for (int i=0; i<1000; i++) s += i.ToString();
// 好
var sb = new StringBuilder(1000 * 4);
for (int i=0; i<1000; i++) sb.Append(i);
string result = sb.ToString();
try { ... }
catch (SqlException ex) when (ex.Number == 1205) { /* 處理死結 */ }
catch (Exception ex) { Logger.Error(ex, "操作失敗"); throw; } // 重拋保留堆疊
這八大實踐涵蓋版本管理、組件安全、資源釋放、效能優化、資料庫存取、錯誤處理與部署品質。貫徹執行能顯著提升 ASP.NET 應用程式的穩定性、可維護性與生產環境表現。建議納入團隊編碼規範與 Code Review 檢核清單。