Cambiar la configuración de ClickOnce en función de la configuración de compilación seleccionada (solo versión de .NET Framework)

Actualización de la página :
Fecha de creación de la página :

medio ambiente

Marco de referencia
  • Formularios Windows Forms (.NET Framework) en general
  • WPF (.NET Framework) en general

premisa

El contenido de estas sugerencias son supuestos de proyecto para .NET Framework. En el caso de .NET (Core), puede establecer la configuración de publicación de ClickOnce en la unidad de configuración de compilación, así que publique como de costumbre.

También asume que tiene suficiente conocimiento para usar ClickOnce normalmente.

Al principio

Dado que un proyecto de .NET Framework solo puede tener una configuración de publicación ClickOnce, Por ejemplo, para publicar con diferentes configuraciones en una compilación de depuración y una compilación de release, debe cambiar manualmente la configuración cada vez antes de publicar.

Puede tener dos configuraciones agrupando los proyectos en una DLL y creando dos proyectos independientes para su publicación. Tendrá la misma configuración dos veces, y si hay archivos de recursos necesarios para la publicación, debe tener dos de ellos a la vez, por lo que la administración será problemática.

En esta sección se describe cómo crear un archivo por lotes (.bat) tantas configuraciones como necesite y publicar ClickOnce.

Configuración de ClickOnce

Esta vez, "Ubicación de la carpeta pública" y "URL de la carpeta de instalación" se separaron para "Debug Build" y "Release Build". Otras configuraciones se crean con la política de hacerlas comunes. Otros parámetros pueden estar separados, pero puede ser engorroso mantener separados los "archivos de aplicación" y los "requisitos previos".

Primero, abra el proyecto e ingrese su configuración de ClickOnce como de costumbre. El contenido de entrada se establece en parámetros que emitirá Debug, pero cualquier cosa que no sea la parte común está bien siempre que no cause un error.

A continuación se muestra un ejemplo de la configuración:

Una vez que haya escrito, guarde el proyecto.

Crear un archivo .bat para la publicación de ClickOnce

Dado que se emite con un comando, se puede ejecutar en otros medios como PowerShell, pero esta vez se crea como un archivo BAT.

Puede crear el archivo en cualquier lugar, pero para simplificar, lo crearé en la ubicación del archivo de solución (.sln). Dado que es un archivo BAT, la codificación de caracteres es Shift-JIS. PS1 puede ser UTF-8 (BOM).

Abra el archivo BAT en un editor de texto y escriba: Tenga en cuenta que PowerShell puede controlar el escape de manera 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\\"

La primera línea apunta a la ubicación de "Developer Command Prompt". Esta ruta de acceso depende de la versión de Visual Studio que esté instalando.

Cada parte de la ruta depende de las siguientes condiciones:

Archivos de programa
Condiciones
de la ruta
Archivos de programa
  • Si está utilizando un sistema operativo de 32 bits
  • Si utiliza una versión de 64 bits de Visual Studio en un sistema operativo de 64 bits
Archivos de programa (x86)
  • Si utiliza una versión de 32 bits de Visual Studio en un sistema operativo de 64 bits
2022
Depende de la versión de Visual Studio que esté instalando.
Comunidad
Depende de la edición de Visual Studio que esté instalando. Se ingresará "Comunidad", "Profesional", "Empresa", etc.

La segunda línea mueve el directorio actual a la ubicación del archivo BAT.

La tercera línea es el comando de procesamiento de compilación ClickOnce. El significado de cada parámetro es el siguiente.

descripción del nombre del parámetro
msbuild Un comando que ejecuta el proceso de compilación. Requerido y escrito primero.
ClickOnceBuildConfiguration.sln Describe el nombre de archivo de la solución que se va a generar.
/t:Publish Indica un proceso de compilación de ClickOnce.
/p:Configuration=Debug Especifica la configuración de compilación que ha establecido para la solución. Si desea cambiar la configuración de depuración que se va a crear, cambie el texto en la parte "Depurar".
/p:PublishUrl="publish\Debug\\" Sobrescriba el valor de "Ubicación de carpeta pública" en la pantalla de publicación de Visual Studio con la cadena especificada y ejecútelo.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Sobrescriba el valor de "Dirección URL de la carpeta de instalación" en la pantalla de publicación de Visual Studio con la cadena especificada y ejecútela.

Se han extraído algunos de los parámetros, pero consulte los siguientes enlaces para otros parámetros:

Como muestra esta vez, cambiaremos los parámetros de publicación de ClickOnce en cada depuración y release build, por lo que lo crearemos de la siguiente manera.

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 la ejecución del archivo BAT

Intente ejecutar cada archivo BAT.

Se inicia el símbolo del sistema y se inicia la compilación.

En realidad, el archivo BAT creado esta vez es solo un proceso hasta la compilación, por lo que el archivo no se crea en la "ubicación de la carpeta pública". Se han creado los archivos necesarios para la publicación. Por ejemplo, en el caso de una compilación de depuración, debe tener un archivo en la ruta de la carpeta del proyecto "< >\bin\Debug\app.publish\". Copie estos archivos en la "URL de la carpeta de instalación" y funcionará correctamente como ClickOnce.

Publicar en una ubicación de carpeta pública (si el destino es una carpeta a la que tiene acceso directo)

El siguiente sitio se utiliza como referencia para esta parte.

Esta área no está directamente relacionada con el procesamiento de ClickOnce, por lo que consulte el sitio anterior para obtener una explicación detallada.

Primero, abra el archivo de proyecto (.csproj) en un editor de texto. No es un archivo de solución.

Dentro hay una estructura XML, y si se desplaza hasta la parte inferior, agregue el </Project> siguiente código a la línea sobre ella. Si se trata de un proceso de premisa de copia de archivos, el contenido es fijo, pero la parte de es CopyPublishedApplication arbitraria. Usarás este nombre más adelante.

<!-- ここから 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 の発行処理 -->

Guárdalo una vez que lo hayas introducido.

Luego abra cada archivo BAT y agréguelo a los /t:CopyPublishedApplication parámetros msbuild. CopyPublishedApplication es el nombre que te di antes.

ClickOnceDebug publica.bat (ejemplo)

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\\"

Al ejecutar el archivo BAT, puede ver que el archivo se copia en la ubicación de la carpeta pública. En este momento, no hay < nombre de programa >.exe archivo, pero es innecesario porque se incluye originalmente en la configuración.exe.

suplemento

Si hay varios proyectos en la solución, se ejecuta CopyPublishedApplication para todos los proyectos. En la mayoría de los casos, solo se establece en el proyecto exe, por lo que se mostrará un error al ejecutarse en CopyPublishedApplication otro proyecto, Es seguro ignorarlo porque solo muestra un mensaje.

Publicar en una ubicación de carpeta pública (para FTP)

No lo he probado, pero es posible que desee consultar los siguientes sitios.

Otras cosas a tener en cuenta