Pubblicare un'applicazione WPF per la quale sono attivati gli stili di visualizzazione

Gli stili di visualizzazione consentono di modificare l'aspetto dei controlli comuni in base al tema scelto dall'utente. Per impostazione predefinita, gli stili di visualizzazione non sono abilitati per le applicazioni Windows Presentation Foundation (WPF), quindi è necessario abilitarli manualmente. Tuttavia, l'abilitazione degli stili di visualizzazione per un'applicazione WPF e la pubblicazione della soluzione genera un errore. Questo argomento descrive come risolvere questo errore e il processo per la pubblicazione di un'applicazione WPF con stili di visualizzazione abilitati. Per altre informazioni sugli stili di visualizzazione, vedere Panoramica degli stili di visualizzazione. Per altre informazioni sul messaggio di errore, vedere Risolvere errori specifici nelle distribuzioni ClickOnce.

Per risolvere l'errore e pubblicare la soluzione, è necessario eseguire le attività seguenti:

Pubblicare la soluzione senza stili di visualizzazione abilitati

  1. Verificare che il progetto non disponga di stili di visualizzazione abilitati. Prima di tutto, controllare il file manifesto del progetto per il codice XML seguente. Quindi, se il codice XML è presente, racchiudere il codice XML con un tag di commento.

    Per impostazione predefinita, gli stili di visualizzazione non sono abilitati.

    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
        </dependentAssembly>
    </dependency>
    

    Le procedure seguenti illustrano come aprire il file manifesto associato al progetto.

    Per aprire il file manifesto in un progetto Visual Basic

    1. Sulla barra dei menu scegliere Progetto, Proprietà NomeProgetto, dove NomeProgetto è il nome del progetto WPF.

      Vengono visualizzate le pagine delle proprietà per il progetto WPF.

    2. Nella scheda Applicazione scegliere Visualizza windows Impostazioni.

      Il file app.manifest viene aperto nell'editor di codice.

    Per aprire il file manifesto in un progetto C#

    1. Sulla barra dei menu scegliere Progetto, Proprietà NomeProgetto, dove NomeProgetto è il nome del progetto WPF.

      Vengono visualizzate le pagine delle proprietà per il progetto WPF.

    2. Nella scheda Applicazione prendere nota del nome visualizzato nel campo manifesto. Si tratta del nome del manifesto associato al progetto.

      Nota

      Se il manifesto di incorporamento con le impostazioni predefinite o Crea applicazione senza manifesto viene visualizzato nel campo manifesto, gli stili di visualizzazione non sono abilitati. Se il nome di un file manifesto viene visualizzato nel campo manifesto, procedere con il passaggio successivo di questa procedura.

    3. In Esplora soluzioni scegliere Mostra tutti i file.

      Questo pulsante mostra tutti gli elementi del progetto, inclusi quelli esclusi e quelli normalmente nascosti. Il file manifesto viene visualizzato come elemento del progetto.

  2. Compilare e pubblicare la soluzione. Per altre informazioni su come pubblicare la soluzione, vedere Procedura: Pubblicare un'applicazione ClickOnce tramite la Pubblicazione guidata.

Creare un file manifesto

  1. Incollare il codice XML seguente in un file Blocco note.

    Questo codice XML descrive l'assembly che contiene controlli che supportano gli stili di visualizzazione.

    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:assembly manifestVersion="1.0"
        xmlns="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dependency>
            <dependentAssembly>
                <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
            </dependentAssembly>
        </dependency>
    </asmv1:assembly>
    
  2. In Blocco note fare clic su Filee quindi su Salva con nome.

  3. Nell'elenco a discesa Salva con nome della finestra di dialogo Salva con nome selezionare Tutti i file.

  4. Nella casella Nome file denominare il file e aggiungere il manifesto alla fine del nome file. Ad esempio: themes.manifest.

  5. Scegliere il pulsante Sfoglia cartelle , selezionare qualsiasi cartella e quindi fare clic su Salva.

    Nota

    Le procedure rimanenti presuppongono che il nome di questo file sia themes.manifest e che il file venga salvato nella directory C:\temp nel computer.

Incorporare il file manifesto nel file eseguibile della soluzione pubblicata

  1. Aprire il prompt dei comandi per gli sviluppatori per Visual Studio.

    Per altre informazioni su come aprire il prompt dei comandi per gli sviluppatori per Visual Studio, vedere Prompt dei comandi per gli sviluppatori e PowerShell per sviluppatori.

    Nota

    I passaggi rimanenti fanno i presupposti seguenti sulla soluzione:

    • Il nome della soluzione è MyWPFProject.

    • La soluzione si trova nella directory seguente: %UserProfile%\Documents\Visual Studio version\Projects\.

    • La soluzione viene pubblicata nella directory seguente: %UserProfile%\Documents\Visual Studio version\Projects\publish.

    • La versione più recente dei file dell'applicazione pubblicata si trova nella directory seguente: %UserProfile%\Documents\Visual Studio version\Projects\publish\Application Files\WPFApp_1_0_0_0

    Non è necessario usare il nome o i percorsi della directory descritti in precedenza. Il nome e i percorsi descritti in precedenza vengono usati solo per illustrare i passaggi necessari per pubblicare la soluzione.

  2. Al prompt dei comandi modificare il percorso della directory contenente la versione più recente dei file dell'applicazione pubblicati. Nell'esempio seguente viene illustrato questo passaggio.

    cd "%UserProfile%\Documents\Visual Studio version\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
    
  3. Al prompt dei comandi eseguire il comando seguente per incorporare il file manifesto nel file eseguibile dell'applicazione.

    mt -manifest c:\temp\themes.manifest -outputresource:MyWPFApp.exe.deploy
    

Firmare i manifesti dell'applicazione e della distribuzione

  1. Al prompt dei comandi eseguire il comando seguente per rimuovere l'estensione .deploy dal file eseguibile nella directory corrente.

    ren MyWPFApp.exe.deploy MyWPFApp.exe
    

    Nota

    In questo esempio si presuppone che solo un file abbia l'estensione di file deploy . Assicurarsi di rinominare tutti i file in questa directory con estensione deploy .

  2. Al prompt dei comandi eseguire il comando seguente per firmare il manifesto dell'applicazione.

    mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
    

    Nota

    In questo esempio si presuppone che il manifesto sia firmato usando il file pfx del progetto. Se non si firma il manifesto, è possibile omettere il -cf parametro usato in questo esempio. Se si firma il manifesto con un certificato che richiede una password, specificare l'opzione -password (For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password).

  3. Al prompt dei comandi eseguire il comando seguente per aggiungere l'estensione .deploy al nome del file rinominato in un passaggio precedente di questa procedura.

    ren MyWPFApp.exe MyWPFApp.exe.deploy
    

    Nota

    In questo esempio si presuppone che un solo file abbia un'estensione di file con estensione deploy . Assicurarsi di rinominare tutti i file in questa directory che in precedenza avevano l'estensione del nome file .deploy .

  4. Al prompt dei comandi eseguire il comando seguente per firmare il manifesto della distribuzione.

    mage -u ..\..\MyWPFApp.application -appm MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
    

    Nota

    In questo esempio si presuppone che il manifesto sia firmato usando il file pfx del progetto. Se non si firma il manifesto, è possibile omettere il -cf parametro usato in questo esempio. Se si firma il manifesto con un certificato che richiede una password, specificare l'opzione -password , come in questo esempio:For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password .

    Dopo aver eseguito questi passaggi, è possibile spostare i file pubblicati nel percorso da cui si vuole che gli utenti finali installino l'applicazione. Se si intende aggiornare spesso la soluzione, è possibile spostare questi comandi in uno script ed eseguire lo script ogni volta che si pubblica una nuova versione.