Expression Blend 應用程式偵錯

如果 Microsoft Expression Blend 應用程式行為與預期不同,或嘗試測試應用程式時發生錯誤,表示應用程式中可能有錯誤。雖然瞭解錯誤原因或應用程式中發生錯誤的位置可能不容易,但瞭解可能會有的錯誤類型仍是有所幫助。

語法錯誤

當您建置應用程式時,任何語法錯誤都會顯示於 Expression Blend 之 [結果] 面板的 [錯誤] 索引標籤中,或是 Microsoft Visual Studio 2010 的 [錯誤清單] 面板中。

如果可延伸應用程式標記語言 (XAML) 或程式碼不符合語言的格式規則,就會發生語法錯誤。錯誤描述有助於您瞭解修正方法。描述也會指出發生錯誤的檔案名稱與行號。常見的一些語法錯誤原因如下:

  • 關鍵字拼錯或大小寫錯誤。

  • 文字字串周圍遺漏引號。

  • XAML 元素遺漏結尾標籤。

  • XAML 元素位於禁止的位置。在 Expression Blend 的 [設計] 檢視或在 Visual Studio 2010 中編輯文件,即可避免這些錯誤。

  • 在程式碼檔案中,函數或方法呼叫未包含必要的參數。例如,MessageBox.Show() 方法必須至少具有一個參數,如 MessageBox.Show("Hello") 中的字串。

  • 在程式碼檔案中,某個類型的變數被指派至不同的類型。例如,MessageBox.Show() 方法可具有字串引數,但不可具有整數引數。

  • 在 C# 中,不需要引數之方法的結尾可能沒有括弧。例如,this.InitializeComponent; 會產生語法錯誤,因為正確寫法是 this.InitializeComponent();

如需有關 XAML 語法的詳細資訊,請參閱 MSDN 上 Windows Presentation Foundation 控制項程式庫 Cc294906.xtlink_newWindow(zh-tw,Expression.40).pngSilverlight Control Gallery Cc294906.xtlink_newWindow(zh-tw,Expression.40).png (Silverlight 控制項陳列庫) 中所列個別控制項的概觀主題。如需程式設計語法的詳細資訊,可在 MSDN 上搜尋程式碼關鍵字。

編譯錯誤

當您建置應用程式時,任何編譯錯誤都會顯示於 Expression Blend 之 [結果] 面板的 [錯誤] 索引標籤中,或是 Visual Studio 2010 的 [錯誤清單] 面板中。

當 Expression Blend 或 Visual Studio 2010 的編譯系統找不到專案所需的項目時,就會發生編譯錯誤。例如,如果 Windows Presentation Foundation (WPF) 專案遺漏 WPF 組件的參照,則可能會收到「'https://schemas.microsoft.com/winfx/2006/xaml/presentation' 命名空間中不存在 'Window' 名稱」之類的錯誤。如果發生此錯誤,可在 [專案] 功能表上按一下 [新增參照],來新增對 "C:\Program Files\Reference Assemblies\Microsoft\Framework\" 資料夾中下列 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,並使用 Expression Blend 或 Visual Studio 2010 來建立應用程式,就不會發生此問題。

  • 未儲存檔案就嘗試建置專案。例如,如果使用 Expression Blend 的 [事件] 面板 Cc294906.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(zh-tw,Expression.40).png 在程式碼後置檔案中產生新的事件處理常式方法 (進而在 Visual Studio 中開啟程式碼後置檔案),接著不先儲存程式碼後置檔案就嘗試在 Expression Blend 中建置專案,就會得到錯誤,指出專案不包含事件處理常式的定義。

執行階段錯誤

如果應用程式建置成功但執行 (在 Expression Blend 中按 F5) 時的行為與預期不同,就表示有執行階段錯誤。執行階段錯誤最難識別,因為涉及邏輯的錯誤。有時候,您可藉由在 XAML 或程式碼中嘗試不同變化直到瞭解幕後過程,以修正執行階段錯誤。不過,在應用程式執行時逐行執行程式碼,可以更迅速地確實看到發生的情況。

如需詳細資訊,請參閱在 Visual Studio 2010 中進行 Expression Blend 應用程式偵錯

常見的一些執行階段錯誤原因如下:

  • XAML 元素配置版面不正確,或使用錯誤的面板物件來包含其他物件。

    若要瞭解版面配置,請參閱排列物件,或參閱 MSDN 上<WPF>一節的配置系統 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png對齊、邊界和填補概觀 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

    XAML 元素未繫結至正確的事件處理常式。如果建立多個事件處理常式方法而指派了錯誤的方法給 XAML 元素,就會發生此錯誤。若要瞭解哪些事件處理常式已指派給 Expression Blend 所開啟之 WPF 專案中的 XAML 元素,請在 [物件與時間軸] 面板中選取物件,然後在 [屬性] 面板中按一下 [事件] 按鈕。

    如需詳細資訊,請參閱撰寫回應事件的程式碼

  • Expression Blend 中的動畫觸發程序設定不正確。例如,若要在載入應用程式後能夠停止或暫停動畫腳本,則必須在任一觸發程序中啟動這些動畫腳本 (預設會在 Window.Loaded 觸發程序中啟動所有動畫腳本,但您可以變更觸發程序)。

    如需詳細資訊,請參閱將物件製作成動畫。如需動畫觸發程序的範例,請參閱建立簡單動畫

  • 程式碼檔案中有變數參照不存在的物件。例如,在程式碼後置檔案中,如果您在 this.InitializeComponent() 這行前面參照 XAML 物件,則會收到 XamlParseException 錯誤。

  • 在程式碼檔案中,您的應用程式不按照預期的程式碼路徑行進。在 Visual Studio 2010 中逐步執行程式碼以進行應用程式偵錯,是最有效的解決方法。

    如需詳細資訊,請參閱在 Visual Studio 2010 中進行 Expression Blend 應用程式偵錯

  • 在程式碼後置檔案中,執行使用者介面 (UI) 更新所用的執行緒上,還有其他應該在不同執行緒上執行的程式設計邏輯。例如,若您建立的事件處理常式方法會更新 Label 中顯示的文字、執行一些其他計算,然後會在事件處理常式方法完成之前,再次更新相同 Label 中的文字,則只會看到最新的更新內容。這是因為只有在事件處理常式方法結束並且在相同的執行緒上完成所有處理時,才會出現 UI 的呈現,所以應用程式無法在方法執行期間暫停下來更新 UI。

    如需有關如何撰寫含多重 UI 更新及計算之 WPF 應用程式的詳細資訊,請參閱 MSDN 上<WPF>一節的執行緒模型 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

  • 程式碼後置檔案的事件處理常式方法中,參照了還不能使用的 UI 元素或屬性。例如,在 Window1() 建構函式方法中,您還不能存取 UI 元素。在 OnInitialized() 事件處理常式方法中,您可以存取 UI 元素,但是無法檢查 ActualWidth 等屬性,因為 UI 元素尚未配置版面。在 OnLoaded() 事件處理常式方法中,您可以對 XAML 文件中現有的 UI 元素執行需要執行的動作。

    如需詳細資訊,請參閱 MSDN 上<WPF>一節的物件存留期事件 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

在 Visual Studio 2010 中進行偵錯

Expression Blend 是針對 WPF 型應用程式及 Microsoft Silverlight 應用程式建立豐富使用者介面的設計工具。您可以使用 Visual Studio 2010 來開啟、建立和偵錯 Expression Blend 專案。如果無法使用 Expression Blend 的 [執行專案] (F5) 功能對應用程式進行偵錯,則可以使用 Visual Studio 2010 獲得執行階段錯誤的詳細錯誤訊息。

如需詳細資訊,請參閱在 Visual Studio 2010 中進行 Expression Blend 應用程式偵錯

效能問題偵錯

WPF 提供一套效能評估工具,可讓您分析應用程式的執行階段行為,協助判斷改善效能的方法。

如需詳細資訊,請參閱 MSDN 上<WPF>一節的 WPF 的效能分析工具 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png最佳化 WPF 應用程式效能 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

事件追蹤

經驗豐富的 .NET 程式設計師可以在 WPF 應用程式中新增程式碼來觸發自訂偵錯事件,協助其對更複雜的錯誤進行偵錯。此功能稱為 Windows 事件追蹤 (ETW)。WPF 事件追蹤設定檔工具會使用 ETW 記錄事件。

如需詳細資訊,請參閱 MSDN 上 WPF 的效能分析工具 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png中的「事件追蹤」及 "PresentationTraceSources"。

混合式應用程式偵錯

如果您的應用程式同時使用了 WPF 和像 Windows 表單程式設計之類的其他技術,您可能會遇到未預期的重疊行為、縮放行為、控制項焦點等問題。

如需有關可協助您對混合式應用程式進行偵錯的詳細資訊,請參閱 MSDN 上<WPF>一節的混合應用程式疑難排解 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

安全性

對應用程式進行偵錯時,應用程式具有和其他人使用它時相同的安全性權限。

如需詳細資訊,請參閱部署及發佈 Expression Blend 應用程式

如需有關 WPF 應用程式安全性的詳細資訊,請參閱 MSDN 上<WPF>一節的安全性 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png

取得協助

如需對 Expression Blend 應用程式進行偵錯的詳細說明,可以搜尋 Windows Presentation Foundation 論壇 Cc294906.xtlink_newWindow(zh-tw,Expression.40).pngSilverlight 學習中心 Cc294906.xtlink_newWindow(zh-tw,Expression.40).png,找出與您問題相關的文章或張貼問題。

Copyright © 2011 by Microsoft Corporation. All rights reserved.