Compartir a través de


Publicación de una aplicación WPF con estilos visuales habilitados

Los estilos visuales permiten que la apariencia de los controles comunes cambie en función del tema elegido por el usuario. De forma predeterminada, los estilos visuales no están habilitados para las aplicaciones de Windows Presentation Foundation (WPF), por lo que debe habilitarlos manualmente. Sin embargo, habilitar estilos visuales para una aplicación WPF y, a continuación, publicar la solución produce un error. En este tema se describe cómo resolver este error y el proceso para publicar una aplicación WPF con estilos visuales habilitados. Para obtener más información sobre los estilos visuales, consulte Introducción a los estilos visuales. Para obtener más información sobre el mensaje de error, consulte Solución de errores específicos en implementaciones de ClickOnce.

Para resolver el error y publicar la solución, debe realizar las siguientes tareas:

Publicación de la solución sin estilos visuales habilitados

  1. Asegúrese de que el proyecto no tenga habilitados los estilos visuales. En primer lugar, compruebe el archivo de manifiesto del proyecto para ver el siguiente XML. A continuación, si el XML está presente, incluya el XML con una etiqueta de comentario.

    De forma predeterminada, los estilos visuales no están habilitados.

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

    Los procedimientos siguientes muestran cómo abrir el archivo de manifiesto asociado al proyecto.

    Para abrir el archivo de manifiesto en un proyecto de Visual Basic

    1. En la barra de menús, elija Proyecto, ProjectNamePropiedades, donde ProjectName es el nombre del proyecto de WPF.

      Aparecen las páginas de propiedades del proyecto de WPF.

    2. En la pestaña Aplicación , elija Ver configuración de Windows.

      El archivo app.manifest se abre en el Editor de código.

    Para abrir el archivo de manifiesto en un proyecto de C#

    1. En la barra de menús, elija Proyecto, ProjectNamePropiedades, donde ProjectName es el nombre del proyecto de WPF.

      Aparecen las páginas de propiedades del proyecto de WPF.

    2. En la pestaña Aplicación , anote el nombre que aparece en el campo manifiesto. Este es el nombre del manifiesto asociado al proyecto.

      Nota:

      Si insertar manifiesto con la configuración predeterminada o Crear aplicación sin manifiesto aparecen en el campo manifiesto, los estilos visuales no están habilitados. Si el nombre de un archivo de manifiesto aparece en el campo manifiesto, continúe con el paso siguiente de este procedimiento.

    3. En el Explorador de soluciones, elija Mostrar todos los archivos.

      Este botón muestra todos los elementos del proyecto, incluidos los que se han excluido y los que normalmente están ocultos. El archivo de manifiesto aparece como un elemento de proyecto.

  2. Compile y publique la solución. Para obtener más información sobre cómo publicar la solución, vea How to: Publish a ClickOnce application using the Publish Wizard.

Creación de un archivo de manifiesto

  1. Pegue el siguiente CÓDIGO XML en un archivo del Bloc de notas.

    Este XML describe el ensamblado que contiene controles que admiten estilos visuales.

    <?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. En el Bloc de notas, haga clic en Archivoy, a continuación, haga clic en Guardar como.

  3. En el cuadro de diálogo Guardar como , en la lista desplegable Guardar como tipo , seleccione Todos los archivos.

  4. En el cuadro Nombre de archivo, asigne el nombre al archivo y anexe .manifest al final del nombre de archivo. Por ejemplo: themes.manifest.

  5. Elija el botón Examinar carpetas , seleccione cualquier carpeta y, a continuación, haga clic en Guardar.

    Nota:

    Los procedimientos restantes asumen que el nombre de este archivo es themes.manifest y que el archivo se guarda en el directorio C:\temp del equipo.

Inserción del archivo de manifiesto en el archivo ejecutable de la solución publicada

  1. Abra Símbolo del sistema para desarrolladores de Visual Studio.

    Para obtener más información sobre cómo abrir el símbolo del sistema para desarrolladores para Visual Studio, consulte Símbolo del sistema para desarrolladores y PowerShell para desarrolladores.

    Nota:

    Los pasos restantes realizan las suposiciones siguientes sobre la solución:

    • El nombre de la solución es MyWPFProject.

    • La solución se encuentra en el directorio siguiente: %UserProfile%\Documents\Visual Studio version\Projects\.

    • La solución se publica en el directorio siguiente: %UserProfile%\Documents\Visual Studio version\Projects\publish.

    • La versión más reciente de los archivos de aplicación publicados se encuentra en el directorio siguiente: %UserProfile%\Documents\Visual Studio version\Projects\publish\Application Files\WPFApp_1_0_0_0

    No es necesario usar el nombre ni las ubicaciones de directorio descritas anteriormente. El nombre y las ubicaciones descritos anteriormente solo se usan para ilustrar los pasos necesarios para publicar la solución.

  2. En el símbolo del sistema, cambie la ruta de acceso al directorio que contiene la versión más reciente de los archivos publicados de la aplicación. En el ejemplo siguiente se muestra este paso.

    cd "%UserProfile%\Documents\Visual Studio version\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
    
  3. En el símbolo del sistema, ejecute el siguiente comando para insertar el archivo de manifiesto en el archivo ejecutable de la aplicación.

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

Firmar la aplicación y los manifiestos de implementación

  1. En la línea de comandos, ejecute el siguiente comando para quitar la extensión .deploy del archivo ejecutable en el directorio actual.

    ren MyWPFApp.exe.deploy MyWPFApp.exe
    

    Nota:

    En este ejemplo se supone que solo un archivo tiene la extensión de archivo .deploy . Asegúrese de cambiar el nombre de todos los archivos de este directorio que tengan la extensión de archivo .deploy .

  2. En el terminal de comandos, ejecute el siguiente comando para firmar el manifiesto de la aplicación.

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

    Nota:

    En este ejemplo se supone que firma el manifiesto mediante el archivo .pfx del proyecto. Si no firma el manifiesto, puede omitir el -cf parámetro que se usa en este ejemplo. Si va a firmar el manifiesto con un certificado que requiere una contraseña, especifique la -password opción (For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password).

  3. En el símbolo del sistema, ejecute el siguiente comando para agregar la extensión .deploy al nombre del archivo cuyo nombre ha cambiado en un paso anterior de este procedimiento.

    ren MyWPFApp.exe MyWPFApp.exe.deploy
    

    Nota:

    En este ejemplo se supone que solo un archivo tenía una extensión de archivo .deploy . Asegúrese de cambiar el nombre de todos los archivos de este directorio que anteriormente tenían la extensión de nombre de archivo .deploy .

  4. En el símbolo del sistema, ejecute el siguiente comando para firmar el manifiesto de implementación.

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

    Nota:

    En este ejemplo se supone que firma el manifiesto mediante el archivo .pfx del proyecto. Si no firma el manifiesto, puede omitir el -cf parámetro que se usa en este ejemplo. Si va a firmar el manifiesto con un certificado que requiere una contraseña, especifique la -password opción , como en este ejemplo:For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password .

    Después de realizar estos pasos, puede mover los archivos publicados a la ubicación desde la que desea que los usuarios finales instalen la aplicación. Si piensa actualizar la solución a menudo, puede mover estos comandos a un script y ejecutarlo cada vez que publique una nueva versión.