> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 架構套件相依性

> 架構套件相依性

如果您的應用程式一直依賴某些在 Microsoft Store 中以架構套件形式提供的可轉散發軟體，您可以宣告對架構套件的相依性，而不是鏈結安裝該可轉散發套件。不過，如果 Microsoft Store 沒有為您所依賴的可轉散發套件提供架構套件，請勿使用此方式。請改為考慮使用自訂安裝動作。

## 詳細資料

* 以一般方式開發您的應用程式，參考所需可轉散發套件的匯出程式庫。

* 不要將相依的可轉散發套件與您的應用程式組合在一起，而是更新您的資訊清單，宣告對相關架構套件的相依性。

* 當使用者從 Microsoft Store 安裝您的應用程式時，它會偵測相依性，並確保架構套件可供應用程式使用。

  如果使用者的裝置上已安裝架構套件，則不需要採取進一步的動作。否則，Microsoft Store 會先觸發架構套件的安裝，再繼續安裝使用該套件的應用程式。

* 應用程式的 x86 組建會使用架構套件的 x86 組建。應用程式的 x64 組建會使用架構套件的 x64 組建。您不需要執行任何動作來指定架構。平台會為您處理。

## DirectX 執行階段

此架構套件提供來自舊版 DirectX SDK 的各種並存選用元件。如果您的應用程式使用已淘汰的 Direct3D 公用程式庫 D3DX9、D3DX10 或 D3DX11、XAudio 2.7、XInput 1.3 或 XACT，則可以使用此套件為您已封裝的 Win32 傳統型應用程式部署這些已淘汰的 DLL。如需這些元件的更多背景資訊，請參閱[這篇部落格文章](https://aka.ms/dxsetup)。

<Note>絕大多數使用 DirectX 的遊戲實際上並不需要此「舊版 DirectX SDK」架構套件相依性。</Note>

```
D3DCompiler_33.dl - D3DCompiler_43.dll
d3dcsx_42.dll, d3dcsx_43.dll
d3dx10.dll, d3dx10_33.dll - d3dx10_43.dll
d3dx11_42.dll, d3dx11_43.dll
d3dx9_24.dll - D3DX9_43.dll
```

```
x3daudio1_0.dll - X3DAudio1_7.dll
xactengine2_0.dll - xactengine2_9.dll
xactengine3_0.dll - xactengine3_7.dll
XAPOFX1_0.dll - XAPOFX1_5.dll
XAudio2_0.dll - XAudio2_7.dll
```

```
xinput1_1.dll - xinput1_3.dll
```

或者，您可以更新您的應用程式以移除[舊版 DirectX SDK](https://learn.microsoft.com/windows/win32/directx-sdk--august-2009-) 相依性。

* 對於 **XAudio2**，最佳選項是使用 Windows 10 SDK 中的標頭升級至 XAudio 2.9。在 Windows 10 中，XAudio 2.9、X3DAudio 和 XAPOFX 都內建於作業系統中。對於非 Store 版本，您可以使用 [XAudio2Redist](https://aka.ms/XAudio2Redist)，它有一個簡單的應用程式本機可轉散發套件，可在 Windows 7 SP1 或更新版本上支援 XAudio2.9。這既可簡化部署，也能解決舊版 XAudio 2.7 的許多已知錯誤。請參閱 [Microsoft Docs](https://learn.microsoft.com/windows/win32/xaudio2/xaudio2-versions)。

* 對於 **XInput**，最佳選項是使用 Windows 10 SDK 中的標頭來使用 XInput 1.4。在 Windows 10 中，XInput 1.4 包含在作業系統中。對於非 Store 版本，您可以使用 XInput 9.1.0，它從 Windows Vista 起就包含在作業系統中。請參閱[這篇部落格文章](https://aka.ms/Mu9kn7)。

> 強烈建議不要使用舊版 XInput 1.3，因為它有已知的安全性問題。架構套件中的版本已更新以緩解此問題，並更新為 SHA-256 程式碼簽署，但原始的舊版 DirectX End-User Runtime 套件並未變更。

* 對於 **Direct3D 10** (`d3dx10`)，最佳選項是升級至 Direct3D 11。請參閱 [Microsoft Docs](https://learn.microsoft.com/windows/win32/direct3d11/d3d11-programming-guide-migrating)。

* 對於 **Direct3D 11** (`d3dx11`)，請參閱[這篇部落格文章](https://aka.ms/Kfsdiu)，了解適用於 Direct3D 11 之舊版 D3DX 的各種替代方案。

> 對於較舊的遊戲，您也可以考慮使用 [Microsoft.DXSDK.D3DX](https://www.nuget.org/packages/Microsoft.DXSDK.D3DX) NuGet 套件，它提供具有並存授權的 2010 年 6 月版 D3DX9、D3DX10 和 D3DX11。這些可轉散發 DLL 也經過 SHA-256 程式碼簽署。

* 對於 **HLSL 編譯器** (`D3DCompiler`)，您可以使用 Windows 10 SDK 中的最新版本。在 Windows 10 中，它包含在作業系統中。對於非 Store 版本，您可以將 `D3DCompiler_47.dll` 作為簡單的應用程式本機檔案與遊戲一起包含。請參閱[這篇部落格文章](https://aka.ms/Tuoxjd)。

<Note>此架構套件和舊版 DirectX End-User Redistributable 都不會以任何方式修改 DirectX 執行階段。</Note>

`MicrosoftGame.config` 程式碼片段範例：

```xml theme={null}
<Game>

  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="DX11"/>
    </DependencyList>
  </DesktopRegistration>

</Game>
```

有兩種方式可以將 DirectX 架構套件安裝到開發或測試電腦上。

1. 從 Microsoft 下載網站下載，然後按兩下 Appx 檔案進行安裝 (建議)。[DirectX x86 架構套件](https://aka.ms/directx_x86_appx)、[DirectX x64 架構套件](https://aka.ms/directx_x64_appx)
2. 從「執行」應用程式輸入下列連結，以取得會安裝 DirectX 架構相依性套件的 DirectX 範例應用程式。(注意：這僅適用於 RETAIL 開發沙箱中的電腦，而且如果您使用的是 x64 平台電腦，只會安裝 x64 平台版本)：ms-windows-store://pdp/?productid=9MTF6XHMN17Z

<Note>DirectX 架構套件不會將這些 DLL 安裝到 System32 資料夾中。它們位於您已封裝應用程式在執行階段的搜尋路徑中。如果您使用明確連結，請勿使用 `LoadLibraryEx` 旗標 `LOAD_LIBRARY_SEARCH_SYSTEM32` 或 `LOAD_LIBRARY_SEARCH_APPLICATION_DIR` 來載入這些舊版 DirectX 程式庫。</Note>

> 此架構套件的 9.29.1974.0 版包含經過 SHA-256 程式碼簽署的承載 DLL，以及 XInput 1.3 的安全性修正。

## Visual Studio C++ 執行階段

在 C/C++ 執行階段的特定情況下，傳統可轉散發套件形式和架構套件形式並不一定相同。傳統的非 Microsoft Store 應用程式一律使用傳統可轉散發套件形式。

| **Visual C/C++ 版本** | **建議** |
| - | - |
| 2015、2017、2019、2022 | 傳統可轉散發套件和架構套件形式相同，您可以選擇其中任一種。不過，我們建議使用架構套件作為最佳做法。 |
| 2013 | MSIXVC 封裝的應用程式必須使用架構版本。否則，某些 API 可能會出現非預期的行為。 |
| 2012 | MSIXVC 封裝的應用程式必須使用架構版本。否則，某些 API 可能會出現非預期的行為。 |
| 2010 和更早版本 | MSIXVC 封裝的應用程式應將傳統可轉散發套件中的鬆散檔案納入應用程式資料夾內的適當子資料夾。對於這些版本，不應使用傳統可轉散發套件或架構套件。 |

前述安裝程式會將必要的架構套件放在下列 *Extension SDKs* 資料夾中：

%PROGRAMFILES(X86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs

請務必側載與您應用程式架構相對應的版本：x86 或 x64。

若要在本機測試您的套件及其架構相依性，請找出用來建置應用程式的 Visual Studio 版本，側載對應的 APPX 架構套件，然後註冊您的應用程式。

如需詳細資訊，請參閱 [Microsoft Docs](https://learn.microsoft.com/troubleshoot/cpp/c-runtime-packages-desktop-bridge)。

### Visual Studio 2012

以下是 Visual Studio 2012 VCLibs 架構套件 v11 的資訊清單項目範例。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC11"/>
    </DependencyList>
  </DesktopRegistration>
```

若要側載此架構套件

* **x86：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"`

* **x64：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx"`

### Visual Studio 2013

以下是 Visual Studio 2012 VCLibs 架構套件 v12 的資訊清單項目範例。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC12"/>
    </DependencyList>
  </DesktopRegistration>
```

若要側載此架構套件

* **x86：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.12.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"`

* **x64：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx"`

### Visual Studio 2015 - 2022

以下是 Visual Studio 2015 或更新版本 VCLibs 架構套件 v14 的資訊清單項目範例。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC14"/>
    </DependencyList>
  </DesktopRegistration>
```

若要側載此架構套件

* **x86：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx"`

* **x64：**

  1. 找到架構套件：

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx

  2. 按兩下進行安裝，或執行下列 Windows PowerShell 命令：

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx"`

請記住，VS 2015 Update 3、VS 2017、VS 2019 和 VS 2022 都使用相同的 REDIST，其中 VS 2022 是最新版本。如需詳細資訊，請參閱 [Microsoft Docs](https://learn.microsoft.com/cpp/porting/binary-compat-2015-2017)。

## 本機測試

在您加入適當資訊清單的參考並側載 APPX 架構套件之後，請使用下列命令安裝應用程式的鬆散組建版本：

`WdApp.exe register loose_build_path`

這可確保您的應用程式已安裝並參考正確的架構。現在，從 \[開始] 功能表中的應用程式磚執行您的應用程式，然後為您的應用程式執行必要的測試和驗證步驟。

在側載設定中完成測試之後，請依照[開始使用 MSIXVC 封裝工具為 PC 封裝遊戲](/zh-TW/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC)主題中的指示建立 MSIXVC 套件。

如需詳細資訊，請參閱
[在 Centennial 專案中使用 Visual C++ 執行階段](https://blogs.msdn.microsoft.com/vcblog/2016/07/07/using-visual-c-runtime-in-centennial-project/)部落格文章。


## Related topics

- [認證 PC BVT 指南](/zh-TW/publishing/game-publishing/concepts/certification/certification-pc-bvt-guide.md)
- [XR037 對內容套件的相依性](/zh-TW/publishing/certification/fma/xr-037.md)
- [XR-037 內容套件的相依性](/zh-TW/publishing/certification/xr/xr-037.md)
- [PlayFab Party 版本資訊](/zh-TW/services/playfab/multiplayer/networking/release-notes.md)
- [XBOX 主機遊戲的認證測試 XBOX 需求](/zh-TW/publishing/certification/console-cert-tested-requirements.md)
