Share via


Compilación de aplicaciones ClickOnce de .NET desde la línea de comandos

En Visual Studio, puede compilar proyectos desde la línea de comandos, incluso si se crean en el entorno de desarrollo integrado (IDE). De hecho, puede recompilar un proyecto creado con Visual Studio en otro equipo que solo tenga .NET 5 o posterior instalado. Esta funcionalidad le permite reproducir una compilación mediante un proceso automatizado, por ejemplo, en un laboratorio de compilación central o mediante técnicas avanzadas de scripting más allá del ámbito de la creación del propio proyecto.

Nota:

Para compilar aplicaciones ClickOnce de .NET Framework desde la línea de comandos, consulte Compilación de aplicaciones ClickOnce desde la línea de comandos.

Uso de MSBuild para reproducir implementaciones de aplicaciones ClickOnce de .NET

Al invocar msbuild /target:publish en la línea de comandos, este comando indica al sistema MSBuild que compile el proyecto y cree una aplicación ClickOnce en la carpeta publish. Este comando equivale a seleccionar el comando Publicar en el IDE.

Este comando ejecuta msbuild.exe, que se encuentra en la ruta de acceso en el entorno del símbolo del sistema de Visual Studio.

Un "destino" (target) es un indicador para MSBuild sobre cómo procesar el comando. Los destinos clave son el destino de "compilación" (build) y el destino de "publicación" (publish). El destino de compilación es equivalente a seleccionar el comando Compilar (o presionar F5) en el IDE. Si solo desea compilar el proyecto, puede escribir msbuild. Este comando funciona porque el destino de compilación es el destino predeterminado para todos los proyectos generados por Visual Studio. Como resultado, no es necesario especificar explícitamente el destino de compilación. Por lo tanto, escribir msbuild es la misma operación que escribir msbuild /target:build.

El comando /target:publish indica a MSBuild que invoque el destino de publicación. El destino de publicación depende del destino de compilación, lo que significa que la operación de publicación es un superconjunto de la operación de compilación. Por ejemplo, si realizó un cambio en los archivos de código fuente de Visual Basic o C#, la operación de publicación vuelve a compilar automáticamente el ensamblado correspondiente.

Para información sobre cómo generar una implementación de ClickOnce completa mediante la herramienta de la línea de comandos Mage.exe para crear el manifiesto ClickOnce, consulte Tutorial: Implementación manual de una aplicación ClickOnce.

Creación y compilación de una aplicación ClickOnce básica con MSBuild

La manera más fácil de crear un perfil de publicación es mediante Visual Studio. Se requiere un perfil de publicación para publicar mediante MSBuild.

Crear y publicar un proyecto ClickOnce

  1. Abra Visual Studio y cree un nuevo proyecto.

    Elija la plantilla de proyecto de la aplicación de Windows Forms o aplicación de WPF y asigne el nombre al proyecto CmdLineDemo y, a continuación, cree el proyecto.

  2. Haga clic con el botón derecho en el Explorador de soluciones y seleccione Publicar.

    Este paso garantiza que el proyecto está configurado correctamente para generar una implementación de aplicación ClickOnce.

    Se muestra la página Publicar.

  3. En la página Publicar, seleccione Agregar un perfil de publicación, elija ClickOnce y, a continuación, seleccione Finalizar.

    En este ejercicio, puede omitir las demás opciones de configuración de la página Publicar.

  4. Una vez completado el proceso, seleccione Cerrar para salir del cuadro de diálogo Publicar página.

  5. Seleccione Publicar.

    Visual Studio genera la salida de implementación ClickOnce.

  6. Guarde el proyecto y anote la ubicación de la carpeta en la que se almacena.

    Los pasos anteriores crean un proyecto ClickOnce que se ha publicado por primera vez. Ahora puede reproducir la compilación fuera del IDE.

Reproducir la compilación desde la línea de comandos

  1. Salga de Visual Studio.

  2. En el menú Inicio de Windows, seleccione Herramientas>Línea de comandos>Símbolo del sistema para desarrolladores.

    Se abre el Símbolo del sistema para desarrolladores de Visual Studio.

  3. En Símbolo del sistema de Visual Studio, cambie el directorio actual a la ubicación del proyecto que acaba de compilar anteriormente.

    Si no está trabajando en el directorio del proyecto, escriba un comando para cambiar a la ubicación deseada, como chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Para quitar los archivos existentes generados en la sección anterior, escriba rmdir /s publish.

    Este paso es opcional, pero garantiza que la compilación de la línea de comandos genere todos los archivos nuevos.

    Para .NET 5 y versiones posteriores, compilar aplicaciones .NET ClickOnce desde la línea de comandos es una experiencia similar. La única diferencia es que debe proporcionar una propiedad adicional para el perfil de publicación en la línea de comandos de MSBuild.

  5. Escriba msbuild /target:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>".

    Los pasos anteriores generan una implementación completa de la aplicación ClickOnce en una subcarpeta del proyecto denominado publish. CmdLineDemo.application es el manifiesto de implementación ClickOnce. La carpeta CmdLineDemo_1.0.0.0 contiene los archivos CmdLineDemo.exe y CmdLineDemo.exe.manifest, el manifiesto de aplicación ClickOnce. Setup.exe es el programa previo, que está configurado de forma predeterminada para instalar .NET. Los archivos de esta carpeta comprenden el conjunto completo de archivos que necesita para implementar la aplicación en la web o a través de UNC o CD/DVD.

Nota:

El sistema MSBuild usa la opción PublishDir para especificar la ubicación de la salida, por ejemplo msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>".

Salida del proceso de publicación

MSBuild usa la propiedad PublishDir para establecer la ubicación de salida de compilación, incluidos los artefactos de compilación. El valor de PublishDir que MSBuild usa como destino para la publicación se obtiene de forma predeterminada de la propiedad PublishDir del archivo .pubxml (.NET). También puede invalidar este comportamiento en la línea de comandos de MSBuild mediante el modificador /p. Si invalida la configuración, la salida de publicación va a la ubicación especificada. La salida se genera durante el paso de publicación de MSBuild. Cualquier destino de MSBuild con ejecuciones de AfterTargets="ClickOncePublish" después de realizar esta copia.

La propiedad PublishUrl, a diferencia de PublishDir, no se usa en el paso de MSBuild. PublishUrl se omite cuando se invoca MSBuild directamente para publicar desde la línea de comandos.

Cuando se inicia la publicación en el IDE de Visual Studio, Visual Studio invoca MSBuild para publicar artefactos en la ubicación PublishDir. Una vez completado este paso de MSBuild, Visual Studio publica los archivos específicos de ClickOnce en la ubicación la que apunta PublishUrl. Este segundo paso se ejecuta dentro del proceso de Visual Studio. No se puede insertar ningún destino o tarea para ejecutarse durante este paso porque es un proceso de Visual Studio.

En el caso de las implementaciones de MSBuild que no usan Visual Studio, copie todos los archivos del directorio de implementación en el destino de implementación o los medios. El directorio de implementación puede ser una carpeta de un sitio web o un sitio FTP, un recurso compartido de archivos o un CD-ROM. Por ejemplo, puede usar una herramienta de terceros o una tarea personalizada de MSBuild para copiar los archivos ClickOnce.

Para cualquier procesamiento posterior en la carpeta PublishUrl, debe tener un script independiente.

Importante

Si PublishDir se establece en la misma ubicación que PublishUrl, la salida de compilación duplicada se copia en la ubicación PublishUrl. Puede evitar esta incidencia en Visual Studio 2022, versión 17.4 y posteriores, mediante la creación de un nuevo perfil. El nuevo perfil establece PublishDir en una ubicación diferente a PublishUrl. Al final de la operación de publicación, los archivos ClickOnce pertinentes se copian de PublishDir a la ubicación PublishUrl.

Publicación de propiedades

Al publicar la aplicación mediante los procedimientos anteriores, las siguientes propiedades se insertan en el archivo de perfil de publicación para proyectos de .NET (.NET 5 y versiones posteriores). Estas propiedades influyen directamente en cómo se genera la aplicación ClickOnce.

En .pubxml:

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Puede invalidar estas propiedades en la línea de comandos sin modificar el propio archivo del proyecto. Por ejemplo, el código siguiente compila la implementación de la aplicación ClickOnce sin el programa previo:

msbuild /target:publish /p:PublishProfile=<pubxml file> /property:BootstrapperEnabled=false

Las propiedades de publicación se controlan en Visual Studio desde las páginas de propiedades Publicar, Seguridad y Firma del Diseñador de proyectos. En el caso de los proyectos de .NET (.NET 5 y versiones posteriores), esta configuración se proporciona en el archivo pubxml, al que puede acceder en Visual Studio mediante la herramienta Publicar.

Las siguientes propiedades de publicación se establecen en varias páginas de propiedades del diseñador de aplicación.

  • AssemblyOriginatorKeyFile determina el archivo de clave usado para firmar los manifiestos de aplicación ClickOnce. Esta misma clave también se puede usar para asignar un nombre seguro a los ensamblados. Esta propiedad se establece en la página Firma del Diseñador de proyectos. En el caso de las aplicaciones Windows de .NET, esta configuración permanece en el archivo del proyecto.

Las propiedades siguientes se establecen en la página Publicar:

  • PublishUrl es la ubicación en la que se publica la aplicación en el IDE. Se inserta en el manifiesto de aplicación ClickOnce si no se especifican las propiedades InstallUrl y UpdateUrl.

  • ApplicationVersion especifica la versión de la aplicación ClickOnce. La versión es un número de cuatro dígitos. Si el último dígito es "*" (asterisco), ApplicationRevision se sustituye por el valor insertado en el manifiesto en tiempo de compilación.

  • ApplicationRevision especifica la revisión. Este valor es un entero que se incrementa cada vez que se publica en el IDE. Observe que no se incrementa automáticamente para las compilaciones realizadas en la línea de comandos.

  • Install determina si la aplicación es una aplicación instalada o se trata de una aplicación que se ejecuta desde la Web.

  • InstallUrl (no se muestra) es la ubicación desde la que los usuarios instalan la aplicación. Si se especifica, este valor se graba en el programa previo setup.exe si la propiedad IsWebBootstrapper está habilitada. También se inserta en el manifiesto de aplicación si UpdateUrl no se especifica.

  • SupportUrl (no se muestra) es la ubicación vinculada en el cuadro de diálogo Agregar o quitar programas de una aplicación instalada.

Las siguientes propiedades se establecen en el cuadro de diálogo Actualizaciones de la aplicación, al que se accede desde la página Publicar.

  • UpdateEnabled indica si la aplicación debe comprobar si hay actualizaciones.

  • UpdateMode especifica actualizaciones en primer plano. En el caso de los proyectos de .NET (.NET 5 y versiones posteriores), no se admite el segundo plano.

  • UpdateUrl (no se muestra) es la ubicación desde la que la aplicación recibe actualizaciones. Si se especifica, este valor se inserta en el manifiesto de aplicación.

Las siguientes propiedades se establecen en el cuadro de diálogo Opciones de publicación, al que se accede desde la página Publicar.

  • PublisherName especifica el nombre del publicador que se muestra en la solicitud que aparece al instalar o ejecutar la aplicación. Para una aplicación instalada, también se usa para especificar el nombre de la carpeta en el menú Inicio.

  • ProductName especifica el nombre del producto que se muestra en la solicitud que aparece al instalar o ejecutar la aplicación. Para una aplicación instalada, también se usa para especificar el nombre del acceso directo en el menú Inicio.

Las siguientes propiedades se establecen en el cuadro de diálogo Requisitos previos, al que se accede desde la página Publicar.

  • BootstrapperEnabled determina si se va a generar el programa previo setup.exe.

  • IsWebBootstrapper determina si el programa previo setup.exe funciona en la Web o en modo basado en disco.

Opciones de uso: InstallURL, SupportUrl, PublishURL, UpdateURL

En la tabla siguiente se muestran las cuatro opciones de dirección URL para la implementación de ClickOnce.

Opción de dirección URL Descripción
PublishURL Necesario para publicar la aplicación ClickOnce en un sitio web.
InstallURL Opcional. Establezca esta opción de dirección URL si el sitio de instalación es diferente de PublishURL. Por ejemplo, puede establecer PublishURL en una ruta de acceso FTP y InstallURL en una dirección URL web.
SupportURL Opcional. Establezca esta opción de dirección URL si el sitio de soporte técnico es diferente de PublishURL. Por ejemplo, puede establecer SupportURL en el sitio web de soporte técnico al cliente de su empresa.
UpdateURL Opcional. Establezca esta opción de dirección URL si la ubicación de actualización es diferente de InstallURL. Por ejemplo, puede establecer PublishURL en una ruta de acceso FTP y UpdateURL en una dirección URL web.