Come viene generato il manifesto di un pacchetto dell'app da Visual StudioHow Visual Studio generates an app package manifest

Quando si compila un progetto con Visual Studio, Visual Studio genera un manifesto del pacchetto (AppxManifest.xml), che contiene le informazioni necessarie per la distribuzione, la visualizzazione o l'aggiornamento di un'app piattaforma UWP (Universal Windows Platform) (UWP) da parte del sistema.When you build a project with Visual Studio, Visual Studio generates a package manifest (AppxManifest.xml), which contains information the system needs to deploy, display, or update a Universal Windows Platform (UWP) app.

Esistono due tipi di file manifesto del pacchetto dell'app che verranno visualizzati se si sviluppa un'app con Visual StudioThere are two varieties of app package manifest files that you'll encounter if developing an app with Visual Studio

  • Package.appxmanifestPackage.appxmanifest
    Si tratta di un file di stile XML che gli sviluppatori usano per configurare i dettagli di un'app, ad esempio le informazioni sul server di pubblicazione, i loghi, le architetture del processore e così via. Si tratta di una versione temporanea e facilmente configurabile del manifesto del pacchetto dell'app usato durante lo sviluppo di app.This is an XML style file that developers use to configure the details of an app, such as publisher information, logos, processor architectures, etc. This is an easily configurable, temporary version of the app package manifest used during app development.
  • AppxManifest.xmlAppxManifest.xml
    Questo file viene generato dal processo di compilazione di Visual Studio e si basa sulle informazioni contenute nel file Package. appxmanifest.This file is generated by the Visual Studio build process and is based on the information in the Package.appxmanifest file. Questa è la versione finale del manifesto del pacchetto dell'app usato con le app pubblicate e sideload.This is the final version of the app package manifest used with published and sideloaded apps. Se vengono apportati aggiornamenti al file Package. appxmanifest, è necessario ricompilare il progetto per visualizzare gli aggiornamenti nel file AppxManifest.xml.If any updates are made to the Package.appxmanifest file, you must rebuild the project to see the updates in the AppxManifest.xml file.

Per una panoramica del processo di creazione dei pacchetti, vedere creare un pacchetto di un'app UWP con Visual Studio.For an overview of the packaging process, see Package a UWP app with Visual Studio.

Convalida del manifesto dell'applicazioneValidating the app manifest

Prima di poter pubblicare l'applicazione, devi correggere tutti gli errori per cui i controlli di convalida di Visual Studio non vengono superati.Before you can publish your app, you must fix any errors that cause any of the Visual Studio validation checks to fail. Quando Visual Studio genera il manifesto, Visual Studio convalida l'applicazione nei modi seguenti:When Visual Studio generates the manifest, Visual Studio validates your app in the following ways:

  • Convalida sintatticaSyntactic validation
    Visual Studio verifica che tutti i dati nel manifesto dell'applicazione siano conformi allo schema del manifesto dell'applicazione.Visual Studio confirms whether all data in the app manifest conforms to the app manifest schema.
  • Convalida semanticaSemantic validation
    Visual Studio fornisce indicazioni sui dati previsti, in base al contesto delle informazioni.Visual Studio provides guidance on expected data, based on the context of the information.

Nota

Se queste sezioni non menzionano il campo che si sta cercando, vengono generate da dati che potrebbero essere stati configurati separatamente o da un valore predefinito dello schema del manifesto.If these sections don’t mention the field that you’re looking for, it’s generated from either data that may have been configured separately or a default value from the manifest schema.

Generazione del contenuto del manifestoGenerating the manifest content

Quando genera il file di AppxManifest.xml per il pacchetto dell'app, Visual Studio popola i campi nelle tabelle seguenti.Visual Studio populates the fields in the following tables when it generates the AppxManifest.xml file for the app package.

IdentitàIdentity

La Identity sezione del manifesto dell'applicazione contiene i campi seguenti.The Identity section of the app manifest contains the following fields.

CampoField DescrizioneDescription
NameName Il nome del pacchetto, che viene popolato in modo diverso negli scenari seguenti:The name of the package, which is populated differently in the following scenarios:
  • Per impostazione predefinita, il valore di questo campo è un GUID generato.By default, the value of this field is a generated GUID.
  • Se si associa l'app al Microsoft Store o si richiama il comando Store-> creare pacchetti dell'applicazione... e quindi si accede con un account sviluppatore, il valore di questo campo viene recuperato dall'app associata nel Microsoft Store o nel centro per i partner.If you associate the app with the Microsoft Store, or if you invoke the Store -> Create App Packages... command and then sign in with a developer account, the value of this field is retrieved from the associated app in the Microsoft Store or Partner Center.
  • Se si richiama il comando Store-> crea pacchetti dell'applicazione... ma non si esegue l'accesso con un account sviluppatore, il valore di questo campo viene tratto dal manifesto di origine.If you invoke the Store -> Create App Packages... command but do not sign in with a developer account, the value of this field is taken from the source manifest.
EditorePublisher Nome del server di pubblicazione.The name of the publisher. Questo nome cambia a seconda dei seguenti scenari:This name gets populated differently in the following scenarios:
  • Per impostazione predefinita, il valore di questo campo è il tuo nome utente.By default, the value of this field is your user name.
  • Se si associa l'app al Microsoft Store o si richiama il comando Store-> creare pacchetti dell'applicazione... e quindi si accede con un account sviluppatore, il valore di questo campo è il server di pubblicazione associato all'account.If you associate the app with the Microsoft Store, or if you invoke the Store -> Create App Packages... command and then sign in with a developer account, the value of this field is the publisher associated with the account.
  • Se si richiama il comando Store-> crea pacchetti dell'applicazione... ma non si esegue l'accesso con un account sviluppatore, il valore di questo campo corrisponderà al campo oggetto del certificato di test usato per firmare il pacchetto dell'app.If you invoke the Store -> Create App Packages... command but do not sign in with a developer account, the value of this field matches the subject field of the test certificate you used to sign the app package.
Visual Studio supporta solo il modulo nome comune (CN) per il server di pubblicazione e aggiunge il prefisso "CN =" al campo server di pubblicazione nel manifesto.Visual Studio only supports the common name (CN) form for the publisher and will add the prefix "CN=" to publisher field in the manifest.
VersionVersion Versione dell'app in fase di compilazione.The version of the app being built. Questa operazione viene in genere incrementata ogni volta che l'app è stata modificata e in pacchetto.This is typically incremented each time the app is has been modified and packaged. Per assicurarsi che la Version venga incrementata correttamente, usare la finestra di dialogo specificata quando si richiama Store-> creare pacchetti dell'applicazione... per eseguire gli aggiornamenti.To ensure that the Version is incremented correctly, use the dialog provided when you invoke Store -> Create App Packages... to make updates.
ProcessorArchitectureProcessorArchitecture Valore generato in base alla configurazione di compilazione specificata per il progetto.A value that's generated based on the build configuration that you specified for the project. Se i riferimenti al progetto o i riferimenti ai file nel progetto sono destinati a un'architettura specifica diversa da quella del pacchetto dell'app, viene generato un errore di compilazione ed è necessario modificare l'architettura di destinazione del pacchetto dell'app in modo che funzioni per tutti i riferimenti.If project references or file references in the project target a different specific architecture than the app package, a build error is thrown, and you must change the target architecture of the app package to work for all references.

Di seguito è riportato un esempio del Identity codice XML di output:Here's an example of the Identity output XML:

<Identity Name="Microsoft.UWPAppExample"
          Publisher="CN=Microsoft Corporation"
          Version="1.0.0.0"
          ProcessorArchitecture="x86" />

ProprietàProperties

La Properties sezione del manifesto dell'applicazione contiene i campi nella tabella seguente.The Properties section of the app manifest contains the fields in the following table.

CampoField DescrizioneDescription
PublisherDisplayNamePublisherDisplayName Questa stringa viene popolata in modo diverso negli scenari seguenti:This string is populated differently in the following scenarios:
  • Per impostazione predefinita, il valore di questo campo è il tuo nome utente.By default, the value of this field is your user name.
  • Se si associa l'app al Microsoft Store o si richiama il comando Store-> creare pacchetti dell'applicazione... e quindi si accede con un account sviluppatore, il valore di questo campo corrisponderà alla stringa PublisherDisplayName associata all'account sviluppatore.If you associate the app with the Microsoft Store, or if you invoke the Store -> Create App Packages... command and then sign in with a developer account, tha value of this field matches the PublisherDisplayName string associated with your developer account.
  • Se si richiama il comando Store-> crea pacchetti dell'applicazione... ma non si esegue l'accesso con un account sviluppatore, il valore di questo campo è il nome utente, a meno che non venga specificato diversamente nel file Package. appxmanifest.If you invoke the Store -> Create App Packages... command but do not sign in with a developer account, the value of this field is your user name, unless you specify otherwise in the Package.appxmanifest file.
DisplayNameDisplayName Questa stringa cambia a seconda dei seguenti scenari:This string gets populated differently in the following scenarios:
  • Per impostazione predefinita, il valore di questo campo è il nome del progetto.By default, the value of this field is the name of the project.
  • Se si associa l'app al Microsoft Store o si richiama il comando Store-> creare pacchetti dell'applicazione... e quindi si accede con un account sviluppatore, il valore di questo campo viene popolato in base alle regole seguenti:If you associate the app with the Microsoft Store, or if you invoke the Store -> Create App Packages... command and then sign in with a developer account, the value of this field is populated according to the following rules:
    • Se si specifica questo valore nel manifesto di origine e il valore inizia con @ (che indica che si desidera localizzare questo valore), il valore di questo campo corrisponderà a quello specificato.If you specify this value in the source manifest and the value starts with @ (which indicates that you want to localize this value), the value of this field will match what you specified.
    • Se l'applicazione selezionata dispone di un solo nome, il valore sarà quel nome.If the selected app has only one name, the value will be that name.
    • Se l'app selezionata ha più nomi ma il manifesto di origine non è localizzato, il valore viene impostato sul nome visualizzato nel manifesto di origine.If the selected app has multiple names but the source manifest isn’t localized, the value is set to the display name in the source manifest. In caso contrario, il valore viene impostato sul primo nome riservato.Otherwise, the value is set to the first reserved name.
  • Se si richiama il comando Store-> crea pacchetti dell'applicazione... ma non si esegue l'accesso con un account sviluppatore, il valore di questo campo viene tratto dal manifesto di origine.If you invoke the Store -> Create App Packages... command but do not sign in with a developer account, the value of this field is taken from the source manifest.
LogoLogo Per impostazione predefinita, viene usato un modello di Visual Studio Assets\StoreLogo.png .A Visual Studio template will use Assets\StoreLogo.png by default. Questo valore deve essere personalizzato dallo sviluppatore nel file Package. appxmanifest.This value should be customized by the developer in the Package.appxmanifest file.

Di seguito è riportato un esempio del Properties codice XML di output:Here's an example of the Properties output XML:

<Properties>
    <DisplayName>UWP App Example</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
</Properties>

ApplicazioneApplication

Un manifesto dell'applicazione può contenere più Application elementi, ognuno dei quali ha un nome visualizzato sul riquadro nel client.A app manifest can contain multiple Application elements, each of which has a display name that appears on the tile in the client. La Application sezione del manifesto dell'applicazione contiene i campi nella tabella seguente.The Application section of the app manifest contains the fields in the following table.

CampoField DescrizioneDescription
IDId Questa stringa cambia a seconda dei seguenti scenari:This string gets populated differently in the following scenarios:
  • Per impostazione predefinita, il valore di questo campo è il nome del progetto.By default, the value of this field is the name of the project.
  • Se si associa l'app al Microsoft Store oppure si richiama il comando Store-> creare pacchetti dell'applicazione e quindi si accede con un account sviluppatore, il valore di questo campo è il nome dell'app selezionata se /Properties[@DisplayName] e /Applications/Application[@DisplayName] nel manifesto di origine corrispondono.If you associate the app with the Microsoft Store, or if you invoke the Store -> Create App Packages... command and then sign in with a developer account, the value of this field is the app name for the selected app if the /Properties[@DisplayName] and the /Applications/Application[@DisplayName] in the source manifest match. In caso contrario, il valore rimane lo stesso del manifesto di origine.Otherwise, the value remains the same as in the source manifest.
  • Se si richiama il comando Store-> crea pacchetti dell'applicazione... ma non si esegue l'accesso con un account sviluppatore, il valore di questo campo corrisponde a quello nel manifesto di origine.If you invoke the Store -> Create App Packages... command but do not sign in with a developer account, the value of this field is the same as in the source manifest.
File eseguibileExecutable Il valore di questo campo è il nome di output dell'assembly del progetto.The value of this field is the output name of the project assembly. Il token eseguibile $targetnametoken $. exe utilizzato nel file manifesto di origine (Package. appxmanifest) viene sostituito con il nome del file effettivo quando il manifesto viene compilato.The executable token $targetnametoken$.exe that's used in the source manifest file (Package.appxmanifest) is replaced with the actual file name when the manifest is built.
EntryPointEntryPoint Questo valore è basato sui Executable valori e generati Id .This value is based on the generated Executable and Id values.

Output di esempio Application :Example Application output:

<Applications>
    <Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
        <!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>

PackageDependencyPackageDependency

La PackageDependency sezione contiene tutte le dipendenze della libreria dei componenti di Windows per questo pacchetto.The PackageDependency section contains all the Windows component library dependencies for this package. Ad esempio, se il progetto contiene un riferimento a WinJS, Visual Studio recupera le informazioni di identità del pacchetto delle dipendenze quando viene generato il manifesto.For example, if your project has a reference to WinJS, Visual Studio retrieves the package identity information of the dependencies when the manifest is generated. Visual Studio compila quindi questa sezione con i Name campi e MinVersion per ogni pacchetto dipendente.Visual Studio then populates this section with the Name and MinVersion fields for each dependent package.

Estensioni per la registrazione Windows RuntimeWindows Runtime registration extensions

È possibile implementare Windows Runtime componenti per le app, ma è necessario registrare i componenti con il sistema operativo affinché possano essere eseguiti correttamente.You can implement Windows Runtime components for your apps, but you'll need to register those components with the operating system for them to run correctly. Per registrare un componente di Windows Runtime, è necessario inserire le informazioni di registrazione nei file WinMD e nel manifesto dell'applicazione.To register a Windows Runtime component, you must put the registration information in the WinMD files and in the app manifest. Se un progetto implementa un componente Windows Runtime, l'output di compilazione del progetto conterrà un file WinMD.If a project implements a Windows Runtime component, the build output of the project will contain a WinMD file. Visual Studio estrae le informazioni di registrazione Windows Runtime dal file WinMD e genera gli Extension elementi appropriati nel manifesto dell'applicazione.Visual Studio extracts the Windows Runtime registration information from the WinMD file and generates the appropriate Extension elements in the app manifest.

Il sistema supporta due forme di server: i server .dll (in-process) e i server .exe (out-of-process).The system supports two forms of servers: .dll servers (in-process) and .exe servers (out-of-process). Le informazioni di registrazione richieste da questi server sono simili e devono essere copiate nel manifesto dell'applicazione.These servers require similar but different registration information that must be copied into the app manifest. Visual Studio supporta la generazione del manifesto solo per i server .dll. Per registrare i server .dll è richiesta l'estensione DLLServer.Visual Studio supports generating manifest only for .dll servers, and the DLLServer extension is required to register .dll servers. Per configurare l'estensione DLLServer vengono estratti dal file WinMD i valori seguenti nel manifesto dell'applicazione:The following values in the app manifest are taken from the WinMD files to construct the DLLServer Extension:

  • DllPathDllPath
  • ActivatableClassIdActivatableClassId
  • ThreadingModelThreadingModel
  • ActivatableClass (attributo ActivatableClassId)ActivatableClass (ActivatableClassId attribute)

Ecco un esempio di XML di output.Here's an example of the output XML:

<extension category="Microsoft.Windows.ActivatableClass">
    <dllServer>
        <dllPath>Fabrikam.dll</dllPath>
        <activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
    </dllServer>
</extension>

Per ulteriori informazioni su questo argomento, vedere Windows Runtime Components.For more information on this topic, see Windows Runtime components.

RisorseResources

La Resources sezione contiene una voce per ogni lingua supportata dall'applicazione.The Resources section contains an entry for each language that the application supports. È necessario specificare almeno una lingua della risorsa nel manifesto dell'applicazione.You must have at least one resource language specified in the app manifest. In Visual Studio, l'elenco delle lingue supportate viene automaticamente compilato in base alle informazioni di localizzazione nel progetto.Visual Studio automatically generates the list of supported languages based on the localization information in the project. Il token della lingua delle risorse "x-generate" usato nel file manifesto di origine (Package. appxmanifest) viene sostituito con il codice della lingua effettivo quando il manifesto viene compilato.The resource language token "x-generate" that's used in the source manifest file (Package.appxmanifest) is replaced with the actual language code when the manifest is built. Ecco un esempio di XML di output.Here's an example of the output XML:

<Resources>
    <Resource Language="en-us">
    <Resource Language="fr-fr">
</Resources>

La prima voce dell'elenco è la lingua predefinita per l'applicazione.The first entry in the list is the default language for the app.

TargetDeviceFamilyTargetDeviceFamily

La TargetDeviceFamily sezione contiene i campi seguenti:The TargetDeviceFamily section contains the following fields:

  • NameName
  • MinVersionMinVersion
  • MaxVersionTestedMaxVersionTested

Questi elementi vengono popolati dalle proprietà di MSBuild.These elements are populated from MSBuild properties.

Vedere ancheSee also

Creare il pacchetto di un'app UWP con Visual StudioPackage a UWP app with Visual Studio
Architetture per i pacchetti di appApp package architectures
Riferimento dello schema del manifesto del pacchetto per Windows 10Windows 10 package manifest schema reference