Visual Studio 如何產生應用程式套件資訊清單
當您使用 Visual Studio 建立專案時,Visual Studio 會 (AppxManifest.xml) 產生套件資訊清單,其中包含系統部署、顯示或更新通用 Windows 平臺 (UWP) 應用程式所需的資訊。
當您使用 Visual Studio 開發應用程式時,有兩種應用程式套件資訊清單檔案會出現:
- 「Package.appxmanifest」
這是一種 XML 樣式檔案,可供開發人員用來設定應用程式的詳細資料,例如發行者資訊、標誌、處理器架構等。這是在應用程式開發期間使用的應用程式套件資訊清單可輕易設定的暫存版本。 - AppxManifest.xml
這個檔案是由 Visual Studio build 進程產生的,而且是以 package.appxmanifest 檔案中的資訊為基礎。 這是與已發佈和側載的應用程式搭配使用的應用程式套件資訊清單最終版本。 如果對 package.appxmanifest 檔案進行了任何更新,您必須重建專案,才能在 AppxManifest.xml 檔中查看更新。
如需封裝流程的總覽,請參閱使用 Visual Studio 封裝 UWP 應用程式。
驗證應用程式資訊清單
您必須先修正任何造成 Visual Studio 驗證檢查失敗的錯誤,才能發佈應用程式。 當 Visual Studio 產生資訊清單時,Visual Studio 會以下列方式驗證您的應用程式:
- 語法驗證
Visual Studio 確認應用程式資訊清單中的所有資料是否符合應用程式資訊清單結構描述。 - 語意驗證
Visual Studio 根據資訊的內容來提供預期資料的指引。
注意
如果這些區段沒有提及您要尋找的欄位,則會從可能已個別設定的資料,或從資訊清單架構的預設值產生。
產生資訊清單內容
Visual Studio 在產生應用程式套件的 AppxManifest.xml 檔案時,填入下表中的欄位。
身分識別
Identity
應用程式資訊清單的區段包含下欄欄位。
欄位 | 描述 |
---|---|
Name | 封裝的名稱,在下列案例中會以不同方式填入:
|
Publisher | 發行者的名稱。 此名稱依下列情況而填入不同的值:
|
版本 | 所建立之應用程式的版本。 這通常會在每次應用程式已修改並封裝時遞增。 若要確定 Version 已正確遞增,請使用您叫用 存放區- > 建立應用程式套件 時所提供的對話方塊 ... 以進行更新。 |
ProcessorArchitecture | 根據您為專案指定的組建設定所產生的值。 如果專案參考或專案中的檔案參考以與應用程式封裝不同的特定架構為目標,則會擲回組建錯誤,而且您必須變更應用程式封裝的目標架構,才能使用所有的參考。 |
以下是輸出 XML 的範例 Identity
:
<Identity Name="Microsoft.UWPAppExample"
Publisher="CN=Microsoft Corporation"
Version="1.0.0.0"
ProcessorArchitecture="x86" />
屬性
Properties
應用程式資訊清單的區段包含下表中的欄位。
欄位 | 描述 |
---|---|
PublisherDisplayName | 在下列案例中,此字串會以不同方式填入:
|
DisplayName | 此字串依下列情況而填入不同的值:
|
標誌 | 預設會使用 Assets\StoreLogo.png Visual Studio 範本。 此值應由開發人員在 package.appxmanifest 檔案中自訂。 |
以下是輸出 XML 的範例 Properties
:
<Properties>
<DisplayName>UWP App Example</DisplayName>
<PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
應用程式
應用程式資訊清單可以包含多個 Application
元素,每個元素的顯示名稱會出現在用戶端的磚上。 Application
應用程式資訊清單的區段包含下表中的欄位。
欄位 | 描述 |
---|---|
識別碼 | 此字串依下列情況而填入不同的值:
|
可執行檔 | 這個欄位的值是專案組件的輸出名稱。 $Targetnametoken $.exe 的可執行標記會用於來源資訊清單檔案 (Package. package.appxmanifest) 會在建立資訊清單時,取代為實際的檔案名。 |
EntryPoint | 這個值是以產生 Executable 的和 Id 值為基礎。 |
範例 Application
輸出:
<Applications>
<Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
<!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>
PackageDependency
PackageDependency
區段包含此套件的所有 Windows 元件程式庫相依性。 例如,如果您的專案具有 WinJS 的參考,則在產生資訊清單時 Visual Studio 會抓取相依性的套件身分識別資訊。 Visual Studio 接著將每個相依套件的 Name
和 MinVersion
欄位填入此區段。
在原生 c + + 專案中,Visual Studio 會新增 Visual C/c + + 執行時間的參考:
<Dependencies>
<PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>
Windows 執行階段的註冊延伸模組
您可以為您的應用程式執行 Windows 執行階段元件,但您必須向作業系統註冊這些元件,才能讓它們正常執行。 若要註冊 Windows 執行階段元件,您必須將註冊資訊放在 WinMD 檔案和應用程式資訊清單中。 如果專案實 Windows 執行階段元件,則專案的組建輸出會包含 WinMD 檔案。 Visual Studio 從 WinMD 檔案中解壓縮 Windows 執行階段的註冊資訊,並在應用程式資訊清單中產生適當 Extension
的元素。
系統支援兩種伺服器:.dll 伺服器 (同處理序) 和 .exe 伺服器 (跨處理序)。 這些伺服器需要類似但不同的註冊資訊,而此資訊必須複製到應用程式資訊清單。 Visual Studio 僅支援為 .dll 伺服器產生資訊清單,而註冊 .dll 伺服器需要 DLLServer 擴充功能。 系統會從 WinMD 檔案取得下列應用程式資訊清單中的值,以建構 DLLServer 擴充功能:
- DllPath
- ActivatableClassId
- ThreadingModel
- ActivatableClass (ActivatableClassId 屬性)
下列是輸出 XML 的範例:
<extension category="Microsoft.Windows.ActivatableClass">
<dllServer>
<dllPath>Fabrikam.dll</dllPath>
<activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
</dllServer>
</extension>
如需本主題的詳細資訊,請參閱Windows 執行階段元件。
資源
Resources
區段包含應用程式所支援之每種語言的專案。 您至少必須在應用程式資訊清單中指定一種資來源語言。 Visual Studio 會自動根據專案中的當地語系化資訊,產生支援的語言清單。 來源資訊清單檔案中使用的資來源語言權杖 "x-產生" (Package. package.appxmanifest) 會在建立資訊清單時,取代為實際的語言代碼。 下列是輸出 XML 的範例:
<Resources>
<Resource Language="en-us">
<Resource Language="fr-fr">
</Resources>
清單中的第一個項目是應用程式的預設語言。
TargetDeviceFamily
此 TargetDeviceFamily
區段包含下欄欄位:
- Name
- MinVersion
- MaxVersionTested
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>
這些專案會從 MSBuild 屬性填入。
另請參閱
使用 Visual Studio 封裝 UWP 應用程式
應用程式套件架構
Windows 10 套件資訊清單的結構描述參考