Alterar as configurações do ClickOnce dependendo da configuração de compilação selecionada (somente versão do Placar NET NET)

Página atualizada :
Data de criação de página :

ambiente

estrutura
  • Formulários do Windows (.NET Framework) em geral
  • WPF (.NET Framework) em geral

premissa

O conteúdo dessas dicas são premissas de projetos para o Framework .NET. No caso de .NET (Core), você pode definir as configurações de publicação do ClickOnce na unidade de configuração de compilação, então publique como de costume.

Ele também assume que você tem conhecimento suficiente para usar o ClickOnce normalmente.

Inicialmente

Como um projeto .NET Framework pode ter apenas uma configuração de publicação ClickOnce, Por exemplo, para publicar com diferentes configurações em uma compilação Debug e uma compilação Depuração, você deve alterar manualmente as configurações cada vez antes de publicar.

Você pode ter duas configurações agrupando os projetos em um DLL e criando dois projetos separados para publicação. Você terá a mesma configuração duas vezes, e se houver arquivos de recursos necessários para publicação, você deve ter dois deles por vez, então o gerenciamento será problemático.

Esta seção descreve como criar um arquivo de lote (.bat) quantas configurações você precisar e publicar o ClickOnce.

Configuração do ClickOnce

Desta vez, "Public Folder Location" e "Installation Folder URL" foram separados para "Depurg Build" e "Release Build". Outras configurações são criadas com a política de torná-las comuns. Outros parâmetros podem ser separados, mas pode ser complicado manter os "arquivos de aplicativos" e "pré-requisitos" separados.

Primeiro, abra o projeto e insira as configurações do ClickOnce como de costume. O conteúdo de entrada é definido como parâmetros a serem emitidos pelo Debug, mas qualquer outra coisa que não seja a parte comum é bom desde que não cause um erro.

A seguir, um exemplo da configuração:

Depois de digitar, salve o projeto.

Crie um arquivo .bat para a publicação clickOnce

Uma vez que é emitido com um comando, ele pode ser executado em outras mídias, como o PowerShell, mas desta vez ele é criado como um arquivo BAT.

Você pode criar o arquivo em qualquer lugar, mas para fins de simplicidade, eu vou criá-lo na localização do arquivo de solução (.sln). Como é um arquivo BAT, a codificação do caractere é Shift-JIS. O PS1 pode ser UTF-8 (BOM).

Abra o arquivo BAT em um editor de texto e digite: Observe que o PowerShell pode lidar com a fuga de forma diferente.

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

A primeira linha aponta para a localização do "Developer Command Prompt". Este caminho depende da versão do Visual Studio que você está instalando.

Cada parte do caminho depende das seguintes condições:

Arquivos do programa
Condições do caminho
Arquivos do programa
  • Se você estiver usando um SO de 32 bits
  • Se você estiver usando uma versão de 64 bits do Visual Studio em um SO de 64 bits
Arquivos de programa (x86)
  • Se você estiver usando uma versão de 32 bits do Visual Studio em um SO de 64 bits
2022
Depende da versão do Visual Studio que você está instalando.
Comunidade
Depende da edição do Visual Studio que você está instalando. "Comunidade", "Profissional", "Empresa", etc. serão inscritos.

A segunda linha move o diretório atual para a localização do arquivo BAT.

A terceira linha é o comando clickOnce build processing. O significado de cada parâmetro é o seguinte.

descrição do nome do parâmetro
msbuild Um comando que executa o processo de construção. Necessário e escrito primeiro.
Clique emOnceBuildConfiguration.sln Descreve o nome do arquivo da solução a ser construída.
/t:Publish Indica um processo de compilação ClickOnce.
/p:Configuration=Debug Especifica a configuração de compilação que você definiu para sua solução. Se você quiser alterar a configuração de depuração a ser construída, altere o texto na parte "Depurar".
/p:PublishUrl="publish\Debug\\" Substitua o valor de "Localização da pasta pública" na tela de publicação do Visual Studio com a sequência especificada e execute-a.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Substitua o valor da "URL da pasta de instalação" na tela de publicação do Visual Studio com a sequência especificada e execute-a.

Alguns dos parâmetros foram extraídos, mas veja os seguintes links para outros parâmetros:

Como uma amostra desta vez, vamos alterar os parâmetros de publicação do ClickOnce em cada depuração e compilação de lançamento, por isso vamos criá-lo da seguinte forma.

Publicado por ClickOnceDebug.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease publicado .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce publica execução de arquivos BAT

Tente executar cada arquivo BAT.

O prompt de comando é lançado e a compilação começa.

Na verdade, o arquivo BAT criado desta vez é apenas um processo até a compilação, de modo que o arquivo não é criado no "local da pasta pública". Os arquivos necessários para publicação foram criados. Por exemplo, no caso de uma compilação de depuração, você deve ter um arquivo no caminho "< pasta de projeto >\bin\Debug\app.publish\". Copie esses arquivos para a "URL da pasta de instalação" e funcionará corretamente como ClickOnce.

Publique em uma localização de pasta pública (se o destino for uma pasta a que você tem acesso direto)

O seguinte site é usado como referência para esta parte.

Esta área não está diretamente relacionada com o processamento do ClickOnce, por isso consulte o site acima para uma explicação detalhada.

Primeiro, abra o arquivo do projeto (.csproj) em um editor de texto. Não é um arquivo de solução.

Dentro há uma estrutura XML, e se você rolar para a parte inferior, adicione o </Project> seguinte código à linha acima dela. Se for um processo de premissa de cópia de arquivo, o conteúdo é corrigido, mas a parte é CopyPublishedApplication arbitrária. Você vai usar este nome mais tarde.

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

Guarde-o uma vez que você entrou nele.

Em seguida, abra cada arquivo BAT e adicione aos /t:CopyPublishedApplication parâmetros msbuild. CopyPublishedApplication é o nome que eu te dei antes.

ClickOnceDebug publica.bat (exemplo)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Ao executar o arquivo BAT, você pode ver que o arquivo é copiado para o Local da Pasta Pública. Neste momento, não há < nome do programa >.exe arquivo, mas é desnecessário porque está originalmente incluído na configuração.exe.

suplemento

Se houver vários projetos na solução, funciona CopyPublishedApplication para todos os projetos. Na maioria dos casos, ele só é definido para o projeto exe, de modo que um erro será exibido ao executar em CopyPublishedApplication outro projeto, É seguro ignorá-lo porque ele só exibe uma mensagem.

Publique em uma pasta pública (para FTP)

Eu não tentei, mas você pode querer se referir aos seguintes sites.

Outras coisas para ter em mente