Partilhar via


Crie aplicativos .NET ClickOnce a partir da linha de comando

No Visual Studio, você pode criar projetos a partir da linha de comando, mesmo que eles sejam criados no ambiente de desenvolvimento integrado (IDE). Na verdade, você pode reconstruir um projeto criado com o Visual Studio em outro computador que tenha apenas o .NET 5 ou posterior instalado. Esse recurso permite reproduzir uma compilação usando um processo automatizado, por exemplo, em um laboratório de compilação central ou com técnicas avançadas de script além do escopo da construção do próprio projeto.

Observação

Para criar aplicativos ClickOnce do .NET Framework a partir da linha de comando, consulte Criar aplicativos ClickOnce a partir da linha de comando.

Use o MSBuild para reproduzir implantações de aplicativos .NET ClickOnce

Quando você invoca msbuild /target:publish na linha de comando, esse comando instrui o sistema MSBuild para criar o projeto e criar um aplicativo ClickOnce na pasta de publicação. Este comando é equivalente a selecionar o comando Publicar no IDE.

Este comando executa msbuild.exe, que está no caminho no ambiente de prompt de comando do Visual Studio.

Um "target" é um indicador para o MSBuild sobre como processar o comando. Os principais objetivos são o objetivo "construir" e o objetivo "publicar". O destino build é o equivalente a selecionar o comando Build (ou pressionar F5) no IDE. Se você quiser apenas construir seu projeto, você pode inserir msbuild. Esse comando funciona porque o destino de compilação é o destino padrão para todos os projetos gerados pelo Visual Studio. Como resultado, você não precisa especificar explicitamente o destino da compilação. Portanto, entrar msbuild é a mesma operação que entrar msbuild /target:build.

O comando /target:publish instrui o MSBuild a invocar o alvo de publicação. O destino de publicação depende do destino de compilação, o que significa que a operação de publicação é um superconjunto da operação de compilação. Por exemplo, se você fez uma alteração nos arquivos de origem do Visual Basic ou C#, a operação de publicação recria automaticamente o assembly correspondente.

Para obter informações sobre como gerar uma implantação completa do ClickOnce usando a ferramenta de linha de comando Mage.exe para criar seu manifesto ClickOnce, consulte Passo a passo: implantar manualmente um aplicativo ClickOnce.

Criar e compilar uma aplicação ClickOnce básica com MSBuild

A maneira mais fácil de criar um perfil de publicação é usando o Visual Studio. Um perfil de publicação é necessário para publicar com o MSBuild.

Criar e publicar um projeto ClickOnce

  1. Abra o Visual Studio e crie um novo projeto.

    Escolha o modelo de projeto Aplicativo Windows Forms ou Aplicativo WPF e nomeie o projeto CmdLineDemoe, em seguida, crie o projeto.

  2. Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar.

    Esta etapa garante que o projeto esteja configurado corretamente para produzir uma implantação de aplicativo ClickOnce.

    A página Publicar é exibida.

  3. Na página Publicar, selecione Adicionar um perfil de publicação, escolha ClickOnce e, em seguida, selecione Concluir.

    Para este exercício, você pode ignorar as outras definições de configuração na página Publicar.

  4. Após a conclusão do processo, selecione Fechar para sair da caixa de diálogo Publicar página.

  5. Selecione Publicar.

    Visual Studio gera a saída de implementação ClickOnce.

  6. Salve seu projeto e anote o local da pasta em que ele está armazenado.

    As etapas anteriores criam um projeto ClickOnce que foi publicado pela primeira vez. Agora você pode reproduzir a compilação fora do IDE.

Reproduzir a compilação a partir da linha de comando

  1. Saia do Visual Studio.

  2. No menu Iniciar do Windows, selecione Tools>Command line>Developer Command Prompt.

    O prompt de comando do desenvolvedor do Visual Studio é aberto.

  3. No prompt de comando do Visual Studio, verifique se o diretório atual mostra o local do projeto que você criou anteriormente.

    Se você não estiver trabalhando no diretório do projeto, insira um comando para alterar para o local desejado, como chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Para remover os ficheiros existentes produzidos na secção anterior, introduza rmdir /s publish.

    Esta etapa é opcional, mas garante que a compilação de linha de comando produza todos os novos arquivos.

    Para o .NET 5 e posterior, a criação de aplicativos .NET ClickOnce a partir da linha de comando é uma experiência semelhante. A única diferença é que você precisa fornecer uma propriedade extra para o perfil de publicação na linha de comando do MSBuild.

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

    As etapas anteriores produzem uma implantação completa do aplicativo ClickOnce em uma subpasta do seu projeto chamada publish. CmdLineDemo.application é o manifesto de implantação do ClickOnce. A pasta CmdLineDemo_1.0.0.0 contém os arquivos CmdLineDemo.exe e CmdLineDemo.exe.manifest, o manifesto do aplicativo ClickOnce. Setup.exe é o bootstrapper, que por padrão é configurado para instalar o .NET. Os arquivos nesta pasta compreendem todo o conjunto de arquivos que você precisa para implantar seu aplicativo na web ou via UNC ou CD / DVD.

Observação

O sistema MSBuild usa a opção PublishDir para especificar o local para a saída, como msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>".

Publicar saída do processo

MSBuild usa a PublishDir propriedade para definir o local de saída da compilação, incluindo artefatos de compilação. O PublishDir valor que o MSBuild usa como destino para a publicação é obtido por padrão da PublishDir propriedade no arquivo .pubxml (.NET). Você também pode substituir esse comportamento na linha de comando do MSBuild usando o parâmetro /p. Se você substituir a configuração, a saída de publicação irá para o local especificado. A saída é gerada durante a etapa de publicação do MSBuild. Qualquer alvo MSBuild com AfterTargets="ClickOncePublish" executa após esta cópia ser realizada.

A propriedade PublishUrl, ao contrário de PublishDir, não é utilizada na etapa MSBuild. PublishUrl é ignorado quando você invoca o MSBuild diretamente para publicar a partir da linha de comando.

Quando a publicação é iniciada no IDE do Visual Studio, o Visual Studio invoca o MSBuild para publicar artefatos no PublishDir local. Após a conclusão desta etapa do MSBuild, o Visual Studio publica arquivos específicos do ClickOnce no local apontado pelo PublishUrl. Esta segunda etapa é executada dentro do processo do Visual Studio. Você não pode injetar nenhum destino/tarefa para executar durante esta etapa porque é um processo do Visual Studio.

Para implantações do MSBuild que não usam o Visual Studio, copie todos os arquivos no diretório de implantação para o destino ou mídia de implantação. O diretório de implantação pode ser uma pasta em um site ou site FTP, um compartilhamento de arquivos ou um CD-ROM. Por exemplo, você pode usar uma ferramenta de terceiros ou uma tarefa personalizada do MSBuild para copiar os arquivos ClickOnce.

Para qualquer pós-processamento na PublishUrl pasta, você precisa ter um script separado.

Importante

Se PublishDir estiver definido para o mesmo local que PublishUrl, a saída de compilação duplicada será copiada para o local PublishUrl. Você pode evitar esse problema no Visual Studio 2022 versão 17.4 e posterior criando um novo perfil. O novo perfil define PublishDir para um local diferente de PublishUrl. No final da operação de publicação, os arquivos ClickOnce relevantes são copiados do PublishDir local para PublishUrl .

Publicar propriedades

Quando você publica o aplicativo usando os procedimentos anteriores, as propriedades a seguir são inseridas no arquivo de perfil de publicação para projetos .NET (.NET 5 e posterior). Essas propriedades influenciam diretamente como o aplicativo ClickOnce é produzido.

Em .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>

Você pode substituir essas propriedades na linha de comando sem alterar o próprio arquivo de projeto. Por exemplo, o código abaixo cria a implantação da aplicação ClickOnce sem o bootstrapper:

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

As propriedades de publicação são controladas no Visual Studio a partir das páginas de propriedades Publicar, Segurança e Assinatura do Designer de Projeto. Para projetos .NET (.NET 5 e posterior), essas configurações são fornecidas no arquivo pubxml, que você pode acessar no Visual Studio usando a ferramenta Publicar.

As propriedades de publicação a seguir são definidas em várias páginas de propriedades do designer de aplicativo.

  • AssemblyOriginatorKeyFile determina o arquivo de chave usado para assinar os manifestos do aplicativo ClickOnce. Esta mesma chave pode também ser usada para atribuir um nome forte aos seus conjuntos. Esta propriedade é definida na página Assinatura do Designer de Projeto. Para aplicativos do Windows .NET, essa configuração permanece no arquivo de projeto.

As seguintes propriedades são definidas na página Publicar :

  • PublishUrl é o local onde o aplicativo é publicado no IDE. É inserido no manifesto da aplicação ClickOnce se as propriedades InstallUrl e UpdateUrl não forem especificadas.

  • ApplicationVersion especifica a versão do aplicativo ClickOnce. A versão é um número de quatro dígitos. Se o último dígito for um asterisco ("*"), então o ApplicationRevision será substituído pelo valor inserido no manifesto durante o momento da compilação.

  • ApplicationRevision especifica a revisão. Esse valor é um inteiro, que é incrementado cada vez que você publica no IDE. Observe que ele não é incrementado automaticamente para compilações executadas na linha de comando.

  • Install determina se o aplicativo é um aplicativo instalado ou um aplicativo executado da Web.

  • InstallUrl (não mostrado) é o local a partir do qual os usuários instalam o aplicativo. Se for especificado, esse valor será gravado no setup.exe bootstrapper se a propriedade IsWebBootstrapper estiver ativada. Ele também é inserido no manifesto do aplicativo se o UpdateUrl não for especificado.

  • SupportUrl (não mostrado) é o local vinculado na caixa de diálogo Adicionar ou remover programas para um aplicativo instalado.

As propriedades a seguir são definidas na caixa de diálogo Atualizações de Aplicativos , acessada na página Publicar .

  • UpdateEnabled Indica se o aplicativo deve verificar se há atualizações.

  • UpdateMode especifica Atualizações em primeiro plano. Para projetos .NET (.NET 5 e posteriores), o plano de fundo não é suportado.

  • UpdateUrl (não mostrado) é o local a partir do qual o aplicativo recebe atualizações. Se especificado, esse valor é inserido no manifesto do aplicativo.

As propriedades a seguir são definidas na caixa de diálogo Opções de publicação , acessada na página Publicar .

  • PublisherName Especifica o nome do editor exibido no prompt mostrado ao instalar ou executar o aplicativo. Para um aplicativo instalado, ele também é usado para especificar o nome da pasta no menu Iniciar .

  • ProductName Especifica o nome do produto exibido no prompt mostrado ao instalar ou executar o aplicativo. Para um aplicativo instalado, ele também é usado para especificar o nome do atalho no menu Iniciar .

As propriedades a seguir são definidas na caixa de diálogo Pré-requisitos , acessada na página Publicar .

  • BootstrapperEnabled Determina se o bootstrapper setup.exe deve ser gerado.

  • IsWebBootstrapper determina se o setup.exe bootstrapper funciona na Web ou no modo baseado em disco.

Opções de uso: InstallURL, SupportUrl, PublishURL, UpdateURL

A tabela a seguir mostra as quatro opções de URL para implantação do ClickOnce.

Opção de URL Description
PublishURL Necessário para publicar o aplicativo ClickOnce em um site.
InstallURL Opcional. Defina esta opção de URL se o site de instalação for diferente do PublishURL. Por exemplo, você pode definir o PublishURL para um caminho FTP e definir o InstallURL para um URL da Web.
SupportURL Opcional. Defina esta opção de URL se o site de suporte for diferente do PublishURL. Por exemplo, pode definir o SupportURL para o site de suporte ao cliente da sua empresa.
UpdateURL Opcional. Defina esta opção de URL se o local de atualização for diferente do InstallURL. Por exemplo, você pode definir o PublishURL para um caminho FTP e definir o UpdateURL para um URL da Web.