Alterar as configurações do ClickOnce dependendo da configuração de compilação selecionada (somente versão do Placar NET NET)
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 emCopyPublishedApplication
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
- Mesmo que você divida a emissão do ClickOnce em várias partes, a entidade é tratada como o mesmo programa, então, por exemplo, você não pode instalar um programa publicado no Debug e um programa publicado com Release no mesmo ambiente. Para instalar, é necessário tomar medidas como mudar o nome de cada assembleia. Consulte o seguinte site para ver o que é identificado por ele.