Expression Blend 應用程式偵錯
如果 Microsoft® Expression Blend™ 應用程式行為與預期不同,或嘗試建置應用程式時發生錯誤,表示應用程式中有錯誤。雖然瞭解錯誤原因或應用程式中發生錯誤的位置可能不容易,但瞭解可能會有的錯誤類型仍是有所幫助。
語法錯誤
當您建置應用程式時,語法錯誤會顯示於 Expression Blend 之 [結果] 面板的 [錯誤] 索引標籤中,或是 Microsoft® Visual Studio® 2005 的 [錯誤清單] 面板中。
如果可延伸應用程式標記語言 (XAML) 或程式碼不符合語言的格式規則,就會發生語法錯誤。錯誤描述有助於您瞭解修正方法。描述也會指出發生錯誤的檔案名稱與行號。常見的一些語法錯誤原因如下:
- 關鍵字拼錯或大小寫錯誤。
- 文字字串周圍遺漏引號。
- XAML 元素遺漏關閉標籤。
- XAML 元素位於禁止的位置。您可以在 Expression Blend [設計] 檢視中編輯文件,或在已經安裝的 Visual Studio 2005 Extensions for .NET Framework 3.0 中編輯文件,以避免這些錯誤。這些擴充功能可以從 MSDN 中下載。
- 在程式碼檔案中,函數或方法呼叫未包含必要的參數。例如,
MessageBox.Show()方法必須至少具有一個參數,例如字串MessageBox.Show("Hello")。 - 在程式碼檔案中,某個類型的變數被指派至不同的類型。例如,
MessageBox.Show()方法可具有字串引數,但不可具有整數引數。 - 在 C# 中,不需要引數之方法的結尾可能沒有括弧。例如,
this.InitializeComponent;會產生語法錯誤,因為正確寫法是this.InitializeComponent();。
如需 XAML 語法的詳細資訊,請參閱 MSDN 上<Windows Presentation Foundation (WPF)>一節中的<控制項庫>(英文) 主題,此主題中列出個別控制項的概觀主題。如需程式設計語法的詳細資訊,可在 MSDN 上搜尋程式碼關鍵字。
編譯錯誤
當您建置應用程式時,編譯錯誤會顯示於 Expression Blend 之 [結果] 面板的 [錯誤] 索引標籤中,或是 Visual Studio 2005 的 [錯誤清單] 面板中。
當 Expression Blend 或 Visual Studio 2005 的編譯系統找不到專案所需的項目時,就會發生編譯錯誤。例如,如果專案遺漏 WPF 組件的參照,則可能會收到「'http://schemas.microsoft.com/winfx/2006/xaml/presentation' 命名空間中不存在 'Window' 名稱」之類的錯誤。如果發生此錯誤,可在 [專案] 功能表上按一下 [新增參照] 來新增對 C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 資料夾中下列 WPF 組件的參照:
- PresentationCore.dll
- PresentationFramework.dll
- WindowsBase.dll
如果您仍然得到「名稱 '<成員>' 不存在於目前的內容中。」之類的錯誤,表示可能遺漏其他的組件參照,或是可能需要將 using (C#) 或 Imports (Visual Basic .NET) 陳述式新增至遺漏命名空間的程式碼。若要瞭解需要哪些組件或命名空間,請參閱造成錯誤之成員的 MSDN 參照主題。
常見的其他一些編譯錯誤原因如下:
- 關鍵字拼錯或大小寫錯誤。
- 應用程式中未正確參照類別。例如,如果應用程式使用的自訂類別是在具有專用命名空間的個別 .cs 或 .vb 程式碼檔案中實作,則應用程式中任何使用自訂類別的文件都需要包括類似下列一行的文字,其中
FullyQualifiedNamespace是程式碼檔案中的命名空間:xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace" - 編譯器選項的設定不正確,或系統無法建置 Microsoft® .NET Framework 型應用程式。如果已安裝 Microsoft .NET Framework 3.0,且用以建立應用程式的是 Expression Blend 或 Visual Studio 2005,就不會發生此問題。
- 未儲存檔案就嘗試建置專案。例如,如果使用 Expression Blend 的 [事件] 面板
在程式碼後置檔案中產生新的事件處理常式方法 (進而在 Visual Studio 中開啟程式碼後置檔案),接著不先儲存程式碼後置檔案就嘗試在 Expression Blend 中建置專案,就會得到錯誤,指出專案不包含事件處理常式的定義。
執行階段錯誤
如果應用程式建置成功但執行 (在 Expression Blend 中按 F5) 時的行為與預期不同,就表示有執行階段錯誤。執行階段錯誤最難識別,因為涉及邏輯的錯誤。有時候,您可藉由在 XAML 或程式碼中嘗試不同變化直到瞭解幕後過程,以修正執行階段錯誤。不過,在應用程式執行時逐行執行程式碼,可以更迅速地確實看到發生的情況。如需詳細資訊,請參閱本主題稍後的在 Visual Studio 2005 中進行偵錯。
常見的一些執行階段錯誤原因如下:
- XAML 元素配置版面不正確,或使用錯誤的面板元素來包含其他元素。若要瞭解版面配置,請參閱本使用者指南的版面配置系統,或參閱 MSDN 上<WPF>一節中的<版面配置系統>(英文) 及<對齊、邊界及邊框間距概觀>(英文)。
- XAML 元素未繫結至正確的事件處理常式。如果建立多個事件處理常式方法而指派了錯誤的方法給 XAML 元素,就會發生此錯誤。若要瞭解 Expression Blend 中有哪些事件處理常式被指派給 XAML 元素,請選取 [互動] 面板之 [物件與時間軸] 下的元素,然後在 [屬性] 面板中按一下 [事件] 按鈕。如需詳細資訊,請參閱本使用者指南的事件處理。
- Expression Blend 中的動畫觸發程序設定不正確。例如,若要在載入應用程式後能夠停止或暫停動畫分鏡板,則必須在任一觸發程序中啟動這些動畫分鏡板 (預設會在 Window.Loaded 觸發程序中啟動所有動畫分鏡板,但您可以變更觸發程序)。如需詳細資訊,請參閱本使用者指南的動畫的基本資訊。如需動畫觸發程序的範例,請參閱建立簡單動畫,或參閱簡單樣式 (Simple Styles) 之<試試看!>一節下的主題。
- 程式碼檔案中有變數參照不存在的物件。例如,在程式碼後置檔案中,您不可以在
this.InitializeComponent();這行前面參照 XAML 物件,否則會收到 XamlParseException 錯誤。 - 程式碼檔案中有些假設會使應用程式不按照預期的程式碼路徑行進。在 Visual Studio 2005 中逐步執行程式碼以進行應用程式偵錯,是最有效的解決方法。如需詳細資訊,請參閱本使用者指南的在 Visual Studio 中對 Expression Blend 應用程式進行偵錯。
- 在程式碼後置檔案中,執行使用者介面 (UI) 更新所用的執行緒上,還有其他應該在不同執行緒上執行的程式設計邏輯。例如,若您建立的事件處理常式方法會更新 [標籤] 中顯示的文字、執行一些其他計算,然後會在事件處理常式方法完成之前,再次更新相同 [標籤] 中的文字,則只會看到最新的更新內容。這是因為只有在事件處理常式方法結束並且在相同的執行緒上完成所有處理時,才會出現 UI 的呈現,所以應用程式無法在方法執行期間暫停下來更新 UI。如需撰寫具有多重 UI 更新和計算之 WPF 應用程式的詳細資訊,請參閱 MSDN 之<WPF>一節中的<執行緒模型>(英文)。
- 程式碼後置檔案的事件處理常式方法中,參照了還不能使用的 UI 元素或屬性。例如,在 Window1() 建構函式方法中,您還不能存取 UI 元素。在 OnInitialized() 事件處理常式方法中,您可以存取 UI 元素,但是無法檢查 ActualWidth 等屬性,因為 UI 元素尚未配置版面。在 OnLoaded() 事件處理常式方法中,您可以對 XAML 文件中現有的 UI 元素執行任何需要執行的動作。如需詳細資訊,請參閱 MSDN 上<WPF>一節中的<物件存留時間事件>(英文)。如需事件及發生時機的清單,請參閱本使用者指南的 事件快速參照。
在 Visual Studio 2005 中進行偵錯
Expression Blend 是專門用於建立豐富使用者介面與運用 WPF 功能之 Windows® 應用程式的設計工具。您可以使用 Visual Studio 2005 (該產品也能建置 Windows 應用程式) 開啟、建置 Expression Blend 專案並對其進行偵錯。如果無法使用 Expression Blend 的 [測試] (F5) 功能對應用程式進行偵錯,可以使用 Visual Studio 2005 獲得執行階段錯誤的詳細錯誤訊息。如需詳細資訊,請參閱本使用者指南的在 Visual Studio 中對 Expression Blend 應用程式進行偵錯。
|
|
若要在 Visual Studio 2005 中建立新的 XAML 應用程式及 XAML 瀏覽器應用程式 (XBAP),則需要安裝 Visual Studio 2005 Extensions for .NET Framework 3.0。這些擴充功能可以從 MSDN 中下載 (您不需要這些擴充功能,就能對使用 Expression Blend 建立的 XAML 應用程式進行偵錯)。 |
效能問題偵錯
WPF 提供一套效能評估工具,可讓您分析應用程式的執行階段行為,協助判斷改善效能的方法。如需詳細資訊,請參閱 MSDN 上<WPF>一節中的<WPF 的效能設定檔工具>(英文) 及<WPF 應用程式效能最佳化>(英文)。
事件追蹤
經驗豐富的 .NET 程式設計師可以在 WPF 應用程式中新增程式碼來觸發自訂偵錯事件,協助其對更複雜的錯誤進行偵錯。此功能稱為 Windows 事件追蹤 (ETW)。WPF 事件追蹤設定檔工具會使用 ETW 記錄事件。如需詳細資訊,請參閱 MSDN 上<WPF>一節中的<事件追蹤>(英文) 及<PresentationTraceSources 類別>(英文)。
混合式應用程式偵錯
如果您的應用程式同時使用了 WPF 和像 Windows 表單程式設計之類的其他技術,您可能會遇到未預期的重疊行為、縮放行為、控制項焦點等問題。如需可協助您對混合式應用程式進行偵錯的詳細資訊,請參閱 MSDN 上<WPF>一節中的<混合式應用程式疑難排解>(英文)。
安全性
對應用程式進行偵錯時,應用程式具有和其他人使用它時相同的安全性權限。如需詳細資訊,請參閱本使用者指南的部署及發佈 Expression Blend 應用程式。如需 WPF 應用程式安全性的詳細資訊,請參閱 MSDN 上<WPF>一節中的<安全性>(英文)。
取得說明
如果需要對 Expression Blend 應用程式進行偵錯的其他說明,則可以搜尋 Windows Presentation Foundation 論壇 (英文),找出與您問題相關的公佈或張貼問題。


