Compilar aplicativos ClickOnce usando a linha de comando
No Visual Studio, você pode compilar projetos a partir da linha de comando, mesmo que eles sejam criados no ambiente de desenvolvimento integrado (IDE). Na verdade, você pode recompilar um projeto criado com o Visual Studio em outro computador que tenha apenas o .NET Framework instalado. Essa capacidade permite reproduzir um build usando um processo automatizado, por exemplo, em um laboratório de build central ou com técnicas avançadas de script além do escopo de compilação do próprio projeto.
Observação
Confira como Compilar aplicativos ClickOnce .NET da linha de comando.
Usar o MSBuild para reproduzir as implantações de aplicativo ClickOnce .NET Framework
Quando você invoca msbuild /target:publish
na linha de comando, esse comando dá instruções ao sistema MSBuild para compilar o projeto e criar um aplicativo ClickOnce na pasta de publicação. Esse comando é equivalente à seleção do comando Publicar no IDE.
Esse comando executa msbuild.exe, que está no caminho no ambiente de prompt de comando do Visual Studio.
Um "destino" é um indicador para o MSBuild sobre como processar o comando. Os principais destinos são o destino "build" e o destino "publicar". O destino build é o equivalente a selecionar o comando Build (ou pressionar F5) no IDE. Se você quiser apenas compilar seu projeto, insira msbuild
. Esse comando funciona porque o destino build é o destino padrão para todos os projetos gerados pelo Visual Studio. Como um resultado, você não precisa especificar explicitamente o destino de build. Portanto, inserir msbuild
é a mesma operação que inserir msbuild /target:build
.
O comando /target:publish
diz ao MSBuild para invocar o destino publicar. O destino de publicação depende do destino de build, o que significa que a operação de publicação é um superconjunto da operação de build. Por exemplo, se você fizer uma alteração nos arquivos de origem do Visual Basic ou C#, a operação de publicação recompila automaticamente um 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 do ClickOnce, confira o Passo a passo: implantar manualmente um aplicativo ClickOnce.
Criar e compilar um aplicativo básico ClickOnce com o 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 do ClickOnce
Abra o Visual Studio e crie um projeto.
Escolha o modelo de projeto Aplicativo Windows Forms (.NET Framework) ou aplicativo WPF (.NET Framework) e nomeie o projeto como
CmdLineDemo
.No menu Compilar, selecione o comando Publicar.
Essa etapa garante que o projeto esteja configurado corretamente para produzir uma implantação de aplicativo ClickOnce.
O Assistente de Publicação será exibido.
No Assistente de Publicação, selecione Concluir.
O Visual Studio gera e exibe a página padrão da web, chamada Publish.htm.
Salve seu projeto e anote o local da pasta em que ele está armazenado.
As etapas acima criam um projeto do ClickOnce que foi publicado pela primeira vez. Agora você pode reproduzir o build fora do IDE.
Reproduzir o build a partir da linha de comando
Saia do Visual Studio.
No menu Iniciar do Windows, selecione Ferramentas>Linha de Comando>Prompt de Comando do Desenvolvedor.
O Prompt de Comando do Desenvolvedor do Visual Studio será aberto.
No Prompt de Comando do Visual Studio, verifique se o diretório atual indica o local do projeto que você compilou 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
.Para remover os arquivos existentes produzidos na seção anterior, insira
rmdir /s publish
.Essa etapa é opcional, mas garante que o build de linhas de comando produza todos os arquivos novos.
Digite
msbuild /target:publish
.As etapas anteriores produzem uma implantação completa do aplicativo ClickOnce em uma subpasta do seu projeto chamada Publicar. 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 inicializador, que por padrão é configurado para instalar o .NET Framework. A pasta DotNetFX contém os arquivos redistribuíveis para o .NET Framework. Os arquivos neste local incluem todo o conjunto de arquivos necessários para implantar seu aplicativo na web ou por meio de UNC ou CD/DVD.
Observação
O sistema MSBuild usa a opção PublishDir para especificar o local para saída, como msbuild /t:publish /p:PublishDir="<specific location>"
.
Publicar saída do processo
O MSBuild usa a propriedade PublishDir
para definir o local de saída do build, incluindo artefatos de build. O valor PublishDir
que o MSBuild usa como destino para a publicação é obtido por padrão da propriedade PublishDir
no arquivo de projeto (.NET Framework). Você pode substituir esse comportamento na linha de comando do MSBuild usando a opção /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 publicar do MSBuild. Qualquer destino do MSBuild com AfterTargets="ClickOncePublish"
é executado após essa cópia ser feita.
A propriedade PublishUrl
, ao contrário de PublishDir
, não é usada na etapa do MSBuild. PublishUrl
é ignorado quando você invoca o MSBuild diretamente para publicar da linha de comando.
Quando a publicação é iniciada no IDE do Visual Studio, o Visual Studio invoca o MSBuild para publicar artefatos no local PublishDir
. Depois que essa etapa do MSBuild for concluída, o Visual Studio publicará arquivos específicos do ClickOnce no local apontado por PublishUrl
. Essa segunda etapa é executada dentro do processo do Visual Studio. Você não pode injetar nenhum destino/tarefa para execução 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 a mídia de implantação. O diretório de implantação talvez seja 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 pasta PublishUrl
, você precisa ter um script separado.
Importante
Se o PublishDir
estiver definido como 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
como um local diferente do PublishUrl
. No final da operação de publicação, os arquivos ClickOnce relevantes são copiados do PublishDir
para o local PublishUrl
.
Publicar propriedades
Quando você publica o aplicativo usando os procedimentos mencionados anteriormente, as propriedades a seguir são inseridas no arquivo de projeto pelo Assistente de Publicação. Essas propriedades influenciam diretamente como o aplicativo ClickOnce é produzido.
Em CmdLineDemo.vbproj / CmdLineDemo.csproj:
<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>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>
Para projetos .NET Framework, você pode substituir uma dessas propriedades na linha de comando sem alterar o próprio arquivo de projeto. Por exemplo, o código a seguir compila a implantação do aplicativo ClickOnce sem o inicializador:
msbuild /target:publish /property:BootstrapperEnabled=false
As propriedades de publicação são controladas no Visual Studio a partir das páginas de propriedade Publicar, Segurança e Assinatura do Designer de Projeto.
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 seus manifestos do aplicativo ClickOnce. Essa mesma chave também pode ser usada para atribuir um nome forte aos assemblies. Essa propriedade é definida na página Assinatura do Designer de Projeto.
As seguintes propriedades são definidas na página Segurança:
Habilitar configurações de segurança do ClickOnce determina se os manifestos do ClickOnce são gerados. Quando um projeto é criado inicialmente, a geração de manifesto do ClickOnce está desativada por padrão. O assistente ativa automaticamente esse sinalizador quando você publica pela primeira vez.
TargetZone determina o nível de confiança a ser emitido no seu manifesto do aplicativo ClickOnce. Os valores possíveis são "Internet", "LocalIntranet" e "Custom". Internet e IntranetLocal fazem com que um conjunto de permissões padrão seja emitido no manifesto do seu aplicativo ClickOnce. IntranetLocal é o padrão e significa basicamente confiança total. Personalizado especifica que apenas as permissões especificadas explicitamente no arquivo base app.manifest devem ser emitidas no manifesto do aplicativo ClickOnce. O arquivo app.manifest é um arquivo de manifesto parcial que contém apenas as definições de informações de confiança. É um arquivo oculto, adicionado automaticamente ao seu projeto quando você configura permissões na página Segurança.
As seguintes propriedades são definidas na página Publicar:
PublishUrl
é o local no qual o aplicativo é publicado no IDE. Ele será inserido no manifesto do aplicativo ClickOnce se ambas as propriedadesInstallUrl
eUpdateUrl
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), oApplicationRevision
será substituído pelo valor inserido no manifesto no momento do build.ApplicationRevision
especifica a revisão. Esse valor é um inteiro que incrementa cada vez que você publica no IDE. Observe que ele não é incrementado automaticamente para builds executados na linha de comando.Install
determina se o aplicativo é um aplicativo instalado ou um aplicativo executado pela Web.InstallUrl
(não mostrado) é o local a partir do qual os usuários instalam o aplicativo. Se especificado, esse valor será gravado no inicializador setup.exe se a propriedadeIsWebBootstrapper
estiver habilitada. Ele também será inserido no manifesto do aplicativo se oUpdateUrl
não for especificado.SupportUrl
(não mostrado) é o local vinculado na caixa de diálogo Adicionar/Remover programas de um aplicativo instalado.
As propriedades a seguir são definidas na caixa de diálogo Atualizações do aplicativo, acessada na página Publicar.
UpdateEnabled
indica se o aplicativo deve verificar se há atualizações.UpdateMode
especifica atualizações em primeiro plano ou atualizações em segundo plano.UpdateInterval
especifica com que frequência o aplicativo deve verificar se há atualizações.UpdateIntervalUnits
especifica se o valorUpdateInterval
está em unidades de horas, dias ou semanas.UpdateUrl
(não mostrado) é o local a partir do qual o aplicativo recebe atualizações. Se especificado, esse valor será 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 publicador 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 inicializador setup.exe deve ser gerado.IsWebBootstrapper
determina se o inicializador setup.exe funciona na Web ou no modo baseado em disco.
Use as opções: InstallURL, SupportUrl, PublishURL, UpdateURL
A tabela a seguir mostra as quatro opções de URL para implantação do ClickOnce.
Opção de URL | Descrição |
---|---|
PublishURL |
Necessário para publicar o aplicativo ClickOnce em um site. |
InstallURL |
Opcional. Defina essa opção de URL se o site de instalação for diferente de PublishURL . Por exemplo, você pode definir o PublishURL como um caminho FTP e definir o InstallURL como uma URL da Web. |
SupportURL |
Opcional. Defina essa opção de URL se o site de suporte for diferente de PublishURL . Por exemplo, você pode definir o SupportURL para o site de suporte ao cliente da sua empresa. |
UpdateURL |
Opcional. Defina essa opção de URL se o local de atualização for diferente de InstallURL . Por exemplo, você pode definir o PublishURL como um caminho FTP e definir o UpdateURL como uma URL da Web. |