共用方式為


部署和偵錯 UWP 應用程式

本文將引導您完成設定各種部署和調試目標的步驟。

Microsoft Visual Studio 可讓您在各種 Windows 10 裝置上部署和偵錯通用 Windows 平臺 (UWP) 應用程式。 Visual Studio 會處理在目標裝置上建置和註冊應用程式的程式。

挑選部署目標

若要挑選目標,請移至 [ 開始 偵錯] 按鈕旁的 [偵錯目標] 下拉式清單,然後選擇您要部署應用程式的目標。 選取目標之後,選取 [ 開始偵錯] [F5] 以在該目標上部署和偵錯,或選取 Ctrl+F5 以只部署至該目標。

偵錯裝置目標清單

  • 模擬器 會將應用程式部署到您目前開發電腦上的模擬環境。 只有當應用程式的目標平台最低版本小於或等於您在開發機上的作業系統時,才能使用此選項。
  • 本機電腦 會將應用程式部署至目前的開發機器。 只有當應用程式的目標平台最低版本小於或等於您在開發機上的作業系統時,才能使用此選項。
  • 遠端電腦 可讓您指定要部署應用程式的遠端目標。 如需部署至遠端電腦的詳細資訊,請參閱 指定遠端裝置
  • 裝置 會將應用程式部署至 USB 連線的裝置。 裝置必須解除開發人員鎖定,且螢幕必須解除鎖定。
  • 模擬器 目標將會啟動,並將應用程式部署至名稱中指定的組態模擬器。 模擬器只能在執行 Windows 8.1 或更新版本 Hyper-V 啟用的機器上使用。

偵錯已部署的應用程式

Visual Studio 也可以選取 [偵錯]來附加至任何執行中的 UWP 應用程式進程,然後 [附加至進程]。 附加至正在執行的程序不需要原始的 Visual Studio 專案,但載入程序的 符號,會在您偵錯沒有原始程式碼的程序時提供很大的幫助。

此外,您可以選取 [偵錯][其他],然後 [偵錯已安裝的應用程式套件]來附加和偵錯任何已安裝的應用程式套件。

[偵錯已安裝的應用程式套件] 對話框

選取 不要啟動,但在啟動時偵錯我的程式碼 將使 Visual Studio 偵錯工具在自定義時間啟動時附加到您的 UWP 應用程式。 這是從 不同啟動方法偵錯控制路徑的有效方式,例如使用自定義參數啟用通訊協定。

UWP app 可以在 Windows 8.1 或更新版本上開發及編譯,但需要 Windows 10 才能執行。 如果您要在 Windows 8.1 電腦上開發 UWP 應用程式,您可以遠端偵錯在另一部 Windows 10 裝置上執行的 UWP 應用程式,前提是主機和目標電腦都位於相同的 LAN 上。 若要這樣做,請下載並安裝這兩部計算機上的 Remote Tools for Visual Studio 。 已安裝的版本必須符合您已安裝的現有 Visual Studio 版本,而且您選取的架構 (x86, x64) 也必須符合目標應用程式的架構。

封裝配置

自 Visual Studio 2015 Update 3 起,我們已新增選項給開發人員指定其 UWP 應用程式的版面配置路徑。 這會決定當您建置應用程式時,套件配置複製到磁碟的位置。 根據預設,這個屬性會設定為相對於專案的根目錄。 如果您未修改這個屬性,行為會維持與舊版Visual Studio相同的行為。

這個屬性可以在專案的 Debug屬性中 修改。

如果您要在為應用程式建立套件時,在套件中包含所有版面設定檔案,您必須新增項目屬性 <IncludeLayoutFilesInPackage>true</IncludeLayoutFilesInPackage>

若要新增此屬性:

  1. 以滑鼠右鍵單擊專案,然後選取 [卸除專案]。
  2. 以滑鼠右鍵按一下專案,然後選取 編輯 [projectname].xxproj(.xxproj 會因專案語言而有所不同)。
  3. 新增 屬性,然後重載專案。

指定遠端裝置

C# 和 Microsoft Visual Basic

若要為 C# 或 Microsoft Visual Basic 應用程式指定遠端電腦,請在 [偵錯目標] 下拉式清單中選取 [ 遠端電腦 ]。 [ 遠端連線 ] 對話框隨即出現,可讓您指定IP位址或選取探索到的裝置。 根據預設,會選取 [通用驗證模式]。 若要判斷要使用的驗證模式,請參閱 驗證模式

[遠端連線] 對話框

若要返回此對話框,您可以開啟專案屬性,並移至 [偵錯] 索引標籤 。從該處選取 [尋找遠端計算機] 旁 的 [尋找

偵錯索引標籤

若要將應用程式部署至 Creators Update 之前的遠端電腦,您還需要在目標電腦上下載並安裝 Visual Studio 遠端工具。 如需完整指示,請參閱 遠端電腦指示。 不過,從 Creators Update PC 起,也支持遠端部署。

C++ 和 JavaScript

若要指定C++或 JavaScript UWP 應用程式的遠端電腦目標:

  1. 在 [方案總管] 中,在專案上按一下滑鼠右鍵,然後按一下 [屬性 ]
  2. 移至 [偵錯 設定],然後在 [調試程式] 下啟動 [],選取 [遠端電腦]。
  3. 輸入 機器名稱(或按一下 [尋找] 來尋找機器),然後設定 驗證類型 屬性。

偵錯屬性頁

指定計算機之後,您可以在 [偵錯目標] 下拉式清單中選取 [ 遠端計算機 ],以返回該指定的計算機。 一次只能選取一部遠端計算機。

遠端電腦指南

備註

只有舊版 Windows 10 才需要這些指示。 從 Creators Update 開始,計算機可以視為 Xbox。 也就是說,藉由在電腦的開發人員模式選單中啟用裝置探索,並使用Universal Authentication進行PIN配對並連線到電腦。

若要部署至 Creators Update 前版本的遠端電腦,目標電腦必須安裝 Visual Studio 遠端工具。 遠端電腦必須執行的 Windows 版本應大於或等於您應用程式的 目標平臺最小版本 屬性所指定的版本。 安裝遠端工具之後,您必須在目標電腦上啟動遠端調試程式。

若要這樣做,請在 [開始] 功能表中搜尋遠端調試程序,開啟它,如果出現提示,則允許調試程式設定防火牆設定。 根據預設,調試程式會使用 Windows 驗證啟動。 如果登入的使用者在這兩部計算機上都不同,則需要用戶認證。

若要將它變更為無驗證,請在 [遠端調試程式] 中,移至 [工具->選項],然後將它設定為 [無驗證]。 設定遠端調試程式之後,您也必須確定您已將主機裝置設定為 開發人員模式。 之後,您可以從開發計算機進行部署。

如需詳細資訊,請參閱 Visual Studio 下載中心 頁面。

傳遞命令行偵錯自變數

在 Visual Studio 2019 中,您可以在開始偵錯 UWP 應用程式時傳遞命令行偵錯自變數。 您可以從 Application 類別的 OnLaunched 方法中,從 args 參數存取命令行偵錯自變數。 若要指定命令行偵錯參數,請開啟項目的屬性,前往 偵錯 索引標籤。

備註

此功能可在 C#、VB 和 C++ 的 Visual Studio 2017(版本 15.1)中使用。 JavaScript 可在更新版本中使用。 命令行偵錯自變數適用於所有部署類型,但模擬器除外。

針對 C# 和 VB UWP 專案,您會看到 命令列引數:在 [開始] 選項下的 字段。

命令行自變數

針對C++和 JS UWP 專案,您會看到 命令行自變數 作為偵錯 屬性中的欄位。

[應用程式 4 屬性頁] 的螢幕快照,其中已選取 [組態屬性] > [偵錯] 選項,其中顯示表格中的命令列參數屬性。

指定命令行自變數之後,您就可以在 App 的 OnLaunched 方法中存取自變數的值。 LaunchActivatedEventArgs 物件 參數 會有一個 Arguments 屬性,其值會設定為 命令列引數 欄位中的文字。

C++ 和 JS 命令行自變數的螢幕快照。

驗證模式

遠端電腦部署有三種驗證模式:

  • 通用 (未加密通訊協定):當您部署至遠端裝置時,請使用此驗證模式。 目前,這是適用於IoT裝置、Xbox裝置和 HoloLens 裝置,以及 Windows 版本 1703 (Creators Update) 或更新版本的電腦。 通用通訊協定(未加密通訊協定)只能用於信任的網路上。 偵錯連線容易受到惡意使用者的攻擊,這些使用者可能會攔截和變更開發與遠端電腦之間傳遞的數據。
  • Windows:此驗證模式僅適用於執行 Visual Studio 遠端工具的遠端電腦(桌上型電腦或筆記型電腦)。 當您能夠存取目標機器登入使用者的認證時,請使用此驗證模式。 這是遠端部署最安全的通道。
  • zh-TW: None:此驗證模式僅適用於執行 Visual Studio 遠端工具的遠端電腦(桌面電腦或筆記型電腦)。 當您在已登入測試帳戶且無法輸入認證的環境中設定測試計算機時,請使用此驗證模式。 確定遠端調試程式設定已設定為不接受驗證。

進階遠端部署選項

自 Visual Studio 2015 Update 3 和 Windows 10 年度更新版起,某些 Windows 10 裝置有新的進階遠端部署選項。 您可以在項目 屬性的 [ 偵錯] 選單上找到進階遠端部署選項。

新的屬性包括:

  • 部署類型
  • 套件註冊路徑
  • 將所有檔案保留在裝置上,即使是那些已不再屬於排版一部分的檔案。

需求

若要使用進階遠端部署選項,您必須滿足下列需求:

  • 使用 Windows 10 Tools 1.4.1 或更新版本安裝 Visual Studio 2015 Update 3 或更新版本(包括 Windows 10 年度更新版 SDK),建議您使用最新版本的 Visual Studio 搭配更新,以確保您取得所有最新的開發和安全性功能。
  • 以 Windows 10 年度更新 Xbox 遠端裝置或 Windows 10 Creators Update 電腦為目標
  • 使用通用驗證模式

屬性頁面

對於 C# 或 Visual Basic UWP 應用程式,屬性頁面看起來會如下所示。

CS 或 VB 屬性

對於C++ UWP app,屬性頁面看起來會像下面這樣。

Cpp 屬性

將檔案複製到裝置

將檔案複製到裝置 會透過網路將檔案實際傳輸至遠端裝置。 它會複製並註冊建置完成的套件設定到 Layout 資料夾路徑,。 Visual Studio 會將複製到裝置的檔案與 Visual Studio 專案中的檔案保持同步;不過,有一個選項可將 所有檔案保留在裝置上,即使是已不再是您版面配置一部分的檔案也一般。 選取此選項表示先前複製到遠端裝置但不再是您專案的一部分的任何檔案,都會保留在遠端裝置上。

當您將檔案複製到裝置時所指定的套件註冊路徑,是複製檔案之遠端裝置上的實體位置。 此路徑可以指定為任何相對路徑。 檔案部署的位置將基於開發檔案的根目錄,而這個根目錄會依據目標裝置的不同而有所變化。 指定此路徑對於共用相同裝置並處理具有建置差異套件的多位開發人員來說很有用。

備註

執行 Windows 10 年度更新版的 Xbox 和執行 Windows 10 Creators Update 的電腦目前支援將檔案複製到裝置

在遠端裝置上,配置會複製到下列預設位置: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

從網路註冊版面配置

當您選擇從網路註冊配置時,您可以將套件配置建置至網路共享,然後直接從網路在遠端裝置上註冊配置。 這需要您指定可從遠端裝置存取的配置資料夾路徑(網路共用)。 Layout 資料夾路徑屬性是相對於執行 Visual Studio 的電腦所設定的路徑,而套件註冊路徑屬性是相同的路徑,但相對於遠端裝置指定。

要從網路上成功註冊版面配置,您必須先將 版面配置資料夾路徑 設定為共用的網路資料夾。 若要這樣做,請以滑鼠右鍵按兩下 [檔案總管] 中的資料夾,選取 [ 與 > 特定人員共用],然後選擇您想要與資料夾共用的使用者。 當您嘗試從網路註冊配置時,系統會提示您輸入認證,以確保您註冊為具有共用存取權的使用者。

如需此說明,請參閱下列範例:

  • 範例 1 (在地配置資料夾,可透過網路共用存取):

    • 版面配置資料夾路徑 = D:\Layouts\App1
    • 套件註冊路徑 = \\NETWORK-SHARE\Layouts\App1
  • 範例 2 (網路設定資料夾):

    • 版面配置資料夾路徑 = \\NETWORK-SHARE\Layouts\App1
    • 套件註冊路徑 = \\NETWORK-SHARE\Layouts\App1

當您第一次從網路設定配置時,您的憑證將會在目標裝置上快取,因此您不需要重複登入。 若要移除快取的認證,您可以使用 Windows 10 SDK 中的 WinAppDeployCmd.exe 工具 搭配 deletecreds 命令。

當您從網路註冊版面配置時,無法選取 [保留裝置上的所有檔案],因為沒有檔案實際地被複製到遠端裝置。

備註

執行 Windows 10 年度更新版和執行 Windows 10 Creators Update 的電腦目前支援從網路 註冊版面配置。

在遠端裝置上,版面配置將根據裝置系列註冊到以下的預設位置:Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles - 它是指向 套件註冊路徑的符號連結,而 電腦不使用符號連結,而是直接註冊到 套件註冊路徑

偵錯選項

在 Windows 10 上,透過一種稱為 預啟動的技術,主動啟動並隨後暫停應用程式,以此改善 UWP 應用程式的啟動效能。 許多應用程式不需要執行任何特殊動作才能在此模式中運作,但某些應用程式可能需要調整其行為。 若要協助偵錯這些程式代碼路徑中的任何問題,您可以在預先啟動模式中從 Visual Studio 開始偵錯應用程式。

Visual Studio 專案提供偵錯功能(偵錯 ->其他偵錯目標 ->偵錯通用 Windows 應用程式預啟動),以及安裝在電腦上的應用程式(偵錯 ->其他偵錯目標 ->偵錯已安裝的應用程式套件,方法是選取 [啟動應用程式並使用預啟動] 的複選框。 如需詳細資訊,請參閱 偵錯 UWP 預先啟動

您可以在啟動專案的 調試 屬性頁上設定下列部署選項:

  • 允許局域網路回送

    基於安全性考慮,不允許以標準方式安裝的 UWP 應用程式對所安裝裝置進行網路呼叫。 根據預設,Visual Studio 部署會為已部署的應用程式建立此規則的豁免。 此豁免可讓您在單一計算機上測試通訊程式。 將應用程式提交至 Microsoft 市集之前,您應該先測試您的應用程式,而不需豁免。

    若要從應用程式移除網路回送豁免:

    • 在 C# 和 Visual Basic [偵錯] 屬性頁面上,清除 [允許局域網络回送] 複選框。
    • 在 [JavaScript] 和 [C++ 錯] 屬性頁面上,將 [允許局域網络回送 ] 值設定為 [否]。
  • 請勿啟動,而是在啟動應用程式時偵錯我的程式代碼

    若要設定部署,以在啟動應用程式時自動啟動偵錯工作階段:

    • 在 C# 和 Visual Basic 的 [偵錯] 屬性頁面上,勾選[[不要啟動],但在程式碼啟動時進行偵錯] 選項框。
    • 在 [JavaScript] 和 [C++ 偵錯] 屬性頁面上,將 [啟動應用程式] 值設定為 [是]

符號

符號檔在偵錯程式代碼時包含各種非常有用的數據,例如變數、函式名稱和進入點位址,可讓您進一步瞭解例外狀況和呼叫堆疊執行順序。 大多數 Windows 版本的符號可透過 Microsoft 符號伺服器 取得,或下載 Windows 符號套件以更快速地進行離線查閱。

若要設定 Visual Studio 的符號選項,請選取 [工具>選項],然後移至>對話框視窗中的 [偵錯符號]。

[選項] 對話框

若要在偵錯會話中使用 WinDbg載入符號,請將 同情 變數設定為符號套件位置。 例如,執行下列命令會從Microsoft符號伺服器載入符號,然後在 C:\Symbols 目錄中快取它們:

.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
.reload

您可以使用分隔符來新增更多路徑 ‘;’ ,或使用 .sympath+ 命令。 如需使用 WinDbg 的更進階符號作業,請參閱 公用和私人符號

WinDbg

WinDbg 是一款強大的偵錯工具,是 Windows 偵錯工具套件的一部分,該套件包含於 Windows SDK中。 Windows SDK 安裝可讓您將適用於 Windows 的偵錯工具安裝為獨立產品。 雖然對原生程式代碼進行偵錯非常實用,但我們不建議針對以Managed程式碼或 HTML5 撰寫的應用程式使用 WinDbg。

若要搭配 UWP 應用程式使用 WinDbg,您必須先使用 PLMDebug 停用應用程式的程序生命週期管理(PLM),如在 程序生命週期管理(PLM)測試和偵錯工具中所述。

plmdebug /enableDebug [PackageFullName] ""C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"

與 Visual Studio 相反,WinDbg 的大部分核心功能都依賴將命令提供給命令視窗。 提供的命令可讓您檢視執行狀態、檢查使用者模式崩潰傾印,以及以各種模式進行偵錯。

WinDbg 中最受歡迎的命令之一是 !analyze -v,它用於獲取有關目前例外狀況的詳細資訊,包括:

  • FAULTING_IP:錯誤時的指令指標
  • EXCEPTION_RECORD:目前例外狀況的位址、程式代碼和旗標
  • STACK_TEXT:例外狀況前的堆疊追蹤

如需所有 WinDbg 命令的完整清單,請參閱 調試程式命令