首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 2005 Express Edition Beta 首日體驗:安裝、配置與除錯陷阱

     編輯:關於C語言

安裝挑戰

從 VS 2005 預覽版升級到 Express Edition Beta 遇到殘留元件清理問題。關鍵阻礙是 Visual Studio .NET Prerequisites 無法從控制台移除,因原安裝媒體已刪除。解決方案:

  1. 開啟登錄編輯器搜尋 "Visual Studio .NET Prerequisites"
  2. 定位 MSI 檔案路徑(通常在 C:\Windows\Installer)
  3. 右鍵 MSI 選擇「解除安裝」

SQL Server 2005 安裝持續報錯(僅有錯誤碼無詳細訊息),最終放棄資料庫功能測試。

IDE 配置必調項目

Express Edition 預設隱藏進階選項,需啟用兩項關鍵設定:

路徑設定用途
Tools → Options☑ Show all settings顯示完整選項樹
Projects and Solutions → General☑ Show advanced build configurations啟用 Debug/Release 切換等進階建置選項

除錯器宿主進程陷阱

現象

專案建置產生 Reborn.exe,但除錯時偵測到 Reborn.vshost.exe:

// 程式碼
m_Thread = Thread.CurrentThread;
m_Process = Process.GetCurrentProcess();
m_Assembly = Assembly.GetEntryAssembly();

// 正常執行
m_Process.MainModule → "Reborn.exe"
m_Assembly.ManifestModule → "Reborn.exe"

// 除錯執行
m_Process.MainModule → "Reborn.vshost.exe"  // 差異在這裡!
m_Assembly.ManifestModule → "Reborn.exe"

根因分析

vshost.exe 是 Visual Studio 宿主進程,用於:

  • 加速除錯啟動(預載 CLR、組件)
  • 支援「Just My Code」非使用者程式碼步過
  • 提供設計時運作支援

導致 Process.GetCurrentProcess().MainModule 回傳宿主進程而非實際組件。

解決方案

  1. 停用宿主進程:Project Properties → Debug → 取消勾選 "Enable the Visual Studio hosting process"
  2. 改用 Assembly 定位:Assembly.GetExecutingAssembly().Location 可靠取得實際路徑
  3. 條件編譯區隔:#if DEBUG 區分除錯/發佈行為

遷移衝擊:.NET 2.0 Breaking Changes

開啟 VS 2003 專案發現多項 API 棄用:

  • FileStream.Handle → 改用 SafeFileHandle
  • 大量 Obsolete 標記需逐一處理
  • 泛型集合取代 ArrayList/Hashtable

總結

Express Edition Beta 雖免費但粗糙:安裝殘留清理困難、SQL Express 整合不穩、宿主進程干擾除錯邏輯、API 大幅變動。適合學習新語法(泛型、匿名方法、partial class),不建議用於實務專案遷移。正式版預期修正多數問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved