具可執行程式碼的選用套件

具有可執行程式代碼的選擇性套件 適用於分割大型或複雜應用程式,或新增至已發佈的應用程式。 使用 Visual Studio 2017 版本 15.7 和 .NET Native 2.1,您可以從 C++ 與 C# 選用套件載入可執行程式碼。

必要條件

  • Visual Studio 2019 或 Visual Studio 2017(15.7 版或更新版本)
  • Windows 10 版本 1709 或更新版本
  • Windows 10 版本 1709 SDK 或更新版本

若要取得最新的開發工具,請參閱 適用於 Windows 10 的下載和工具。

注意

若要將使用選用套件和/或相關集合的應用程式提交至市集,您需要許可權。 若未提交至市集,選擇性套件和相關集合可用於沒有合作夥伴中心許可權的企業營運或企業應用程式。 請參閱 Windows 開發人員支援 ,以取得提交使用選用套件和相關集合的應用程式的許可權。

注意

包含可執行程式代碼的選用套件必須是相關集合的一部分。 除非它是相關集合的一部分,否則您無法從選擇性套件執行程序代碼。

具有可執行程式碼的 C++ 選用套件

若要從 C++ 選用套件載入程式代碼,請參閱 GitHub 上的 OptionalPackageSample 存放庫。 OptionalPackageDLL 示範如何使用可從主要封裝執行的程式代碼來建立專案。 MyMainApp 專案示範如何 從 OptionalPackageDLL.dll 檔案載入程式代碼

具有可執行程式碼的 C# 選用套件

若要開始在 C# 中建置選擇性程式碼套件,請遵循下列步驟來設定您的解決方案:

  1. 建立新的 UWP 應用程式,並將最低版本設定為 Windows 10 Fall Creators Update SDK(組建 16299) 或更高版本。

  2. 將新的 選擇性程式代碼套件 (通用 Windows) 專案新增至方案。 確定最低版本目標版本符合您主要應用程式的版本

  3. 如果您打算將應用程式提交至市集,請以滑鼠右鍵按兩個項目,然後選取 [市集 -> 將應用程式與市集建立關聯...]。

  4. Package.appxmanifest開啟主要應用程式的檔案並尋找Identity Name值。 請記下下一個步驟的這個值。

  5. 開啟選用的應用程式套件 Package.appxmanifest 檔案並尋找 uap3:MainAppPackageDependency Name 值。 uap3:MainAppPackageDependency Name更新 值,以符合Identity Name上一個步驟中主要應用程式套件的值。

    以下是主要應用程式 之的Package.appxmanifest範例Identity

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    必須更新選用的應用程式套件 uap3:MainPackageDependency ,才能符合主要應用程式的 Identity

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Bundle.mapping.txt將檔案新增至主要應用程式。 請遵循此 相關集合 一節中的步驟,建立包含這兩個應用程式的相關集合。

  7. 建置選擇性套件專案,然後流覽至位於 的組建 ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference輸出中的套件參考資料夾。 請注意,您可以選擇 [參考] 資料夾路徑中的任何架構,因為 .winmd 檔案 (步驟 8) 與架構無關。

  8. 將主要應用程式項目的參考新增至 .winmd 此資料夾中找到的檔案。 每次您在選用套件項目中變更 API 介面區時,都必須更新此.winmd檔案。 此參考會提供主要應用程式專案,並提供編譯所需的資訊。

  9. 在主要應用程式專案中,流覽至專案建置屬性,然後選取 [使用 .NET 原生編譯] 工具鏈。 目前,只有 .NET Native 中的偵錯支援在 C# 中建立選擇性的程式碼套件。 移至專案偵錯屬性,然後選取 [ 部署選擇性套件]。 這可確保每當您部署主要應用程式專案時,這兩個套件都會同步。

完成這些步驟之後,您可以將程式代碼新增至選擇性套件專案,就好像它是受控 WinRT 元件項目一樣。 若要存取主要應用程式專案中的程式代碼,請呼叫選擇性套件專案中公開的公用方法。