Как Visual Studio создает манифест пакета приложения
при построении проекта с Visual Studio Visual Studio создает манифест пакета (AppxManifest.xml), который содержит сведения, необходимые системе для развертывания, вывода или обновления приложения универсальная платформа Windows (UWP).
Существует два вида файлов манифеста пакета приложения, которые могут возникнуть при разработке приложения с Visual Studio
- Package.appxmanifest
Это XML-файл стиля, используемый разработчиками для настройки сведений о приложении, таких как сведения об издателе, логотипы, архитектуры процессоров и т. д. Это легко настраиваемая временная версия манифеста пакета приложения, используемая во время разработки приложения. - AppxManifest.xml
этот файл создается Visual Studio процессом сборки и основывается на информации в файле Package. appxmanifest. Это окончательная версия манифеста пакета приложения, используемого с опубликованными и загруженные неопубликованные приложениями. Если в файл Package. appxmanifest вносятся какие либо обновления, необходимо перестроить проект, чтобы просмотреть обновления в файле AppxManifest.xml.
Общие сведения о процессе упаковки см. в статье Упаковка приложения UWP с помощью Visual Studio.
Проверка манифеста приложения
Прежде чем публиковать приложение, необходимо исправить все ошибки, которые не позволяют пройти любую из проверок Visual Studio. Когда среда Visual Studio создает манифест, она проверяет приложение следующим образом.
- Синтаксическая проверка
Visual Studio проверяет, соответствуют ли все данные в манифесте приложения схеме манифеста приложения. - Семантическая проверка
Visual Studio предоставляет рекомендации по ожидаемым данным на основе контекста сведений.
Примечание
Если в этих разделах не упоминается искомое поле, оно формируется из данных, которые могут быть настроены отдельно, или по умолчанию из схемы манифеста.
Создание содержимого манифеста
Visual Studio заполняет поля в следующих таблицах при формировании файла AppxManifest.xml для пакета приложения.
Идентификация
Identity
Раздел манифеста приложения содержит следующие поля.
Поле | Описание |
---|---|
Имя | Имя пакета, которое заполняется по-разному в следующих сценариях:
|
Publisher | Имя издателя. Это имя заполняется по-разному в следующих сценариях.
|
Версия | Версия создаваемого приложения. Это обычно увеличивается каждый раз, когда приложение было изменено и упаковано. Чтобы обеспечить Version правильное увеличение значения, используйте диалоговое окно, предоставляемое при вызове хранилища — > Создание пакетов приложений... для обновления. |
ProcessorArchitecture | Значение, создаваемое на основе конфигурации сборки, указанной для проекта. Если ссылки проекта или ссылки на файлы в проекте ориентированы на другую определенную архитектуру, чем пакет приложения, возникает ошибка сборки, и необходимо изменить целевую архитектуру пакета приложения для работы со всеми ссылками. |
Ниже приведен пример Identity
выходного XML.
<Identity Name="Microsoft.UWPAppExample"
Publisher="CN=Microsoft Corporation"
Version="1.0.0.0"
ProcessorArchitecture="x86" />
Свойства
Properties
Раздел манифеста приложения содержит поля, приведенные в следующей таблице.
Поле | Описание |
---|---|
PublisherDisplayName | Эта строка заполняется по-разному в следующих сценариях:
|
DisplayName | Эта строка заполняется по-разному в следующих сценариях.
|
Эмблема | шаблон Visual Studio будет использоваться Assets\StoreLogo.png по умолчанию. Это значение должно быть настроено разработчиком в файле Package. appxmanifest. |
Ниже приведен пример Properties
выходного XML.
<Properties>
<DisplayName>UWP App Example</DisplayName>
<PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
Развертывание
Манифест приложения может содержать несколько Application
элементов, каждый из которых имеет отображаемое имя, отображаемое на плитке в клиенте. Application
Раздел манифеста приложения содержит поля, приведенные в следующей таблице.
Поле | Описание |
---|---|
Идентификатор | Эта строка заполняется по-разному в следующих сценариях.
|
Исполняемый файл | Значением этого поля является выходное имя сборки проекта. Исполняемый токен $targetnametoken $.exe, используемый в исходном файле манифеста (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 извлекает сведения о регистрации среда выполнения Windows из WinMD-файла и создает соответствующие 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 components.
Ресурсы
Resources
Раздел содержит запись для каждого языка, поддерживаемого приложением. Необходимо указать по крайней мере один язык ресурсов в манифесте приложения. Visual Studio автоматически создает список поддерживаемых языков на основе сведений о локализации в проекте. Маркер языка ресурсов "x-Generate", используемый в исходном файле манифеста (Package. appxmanifest), заменяется фактическим кодом языка при сборке манифеста. Ниже приведен пример выходного XML.
<Resources>
<Resource Language="en-us">
<Resource Language="fr-fr">
</Resources>
Первая запись в списке является языком по умолчанию для приложения.
TargetDeviceFamily
TargetDeviceFamily
Раздел содержит следующие поля:
- Имя
- MinVersion
- Maxversiontested укажите установленную
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>
эти элементы заполняются из MSBuild свойств.
См. также раздел
Упаковка приложения UWP с помощью Visual Studio
Архитектуры пакетов приложений
Справочник по схемам манифеста пакетов Windows 10