Изменение параметров ClickOnce в зависимости от выбранной конфигурации сборки (только версия .NET Framework)

Страница обновлена :
Дата создания страницы :

окружающая среда

каркас
  • Windows Forms (платформа .NET Framework) в целом
  • WPF (.NET Framework) в целом

предпосылка

Содержимое этих советов является проектными допущениями для .NET Framework. В случае .NET (Core) вы можете установить параметры публикации ClickOnce в блоке конфигурации сборки, поэтому, пожалуйста, опубликуйте как обычно.

Это также предполагает, что у вас достаточно знаний для нормального использования ClickOnce.

Сначала

Поскольку проект .NET Framework может иметь только один параметр публикации ClickOnce, Например, чтобы опубликовать с различными параметрами в сборках Debug и Release, необходимо вручную изменять параметры каждый раз перед публикацией.

Можно иметь два параметра, сгруппировав проекты в библиотеку DLL и создав два отдельных проекта для публикации. У вас будет одна и та же конфигурация дважды, и если есть файлы ресурсов, необходимые для публикации, вы должны иметь два из них одновременно, поэтому управление будет хлопотным.

В этом разделе описывается, как создать пакетный файл (.bat) столько параметров, сколько необходимо, и опубликовать ClickOnce.

Настройка ClickOnce

На этот раз «Расположение общей папки» и «URL-адрес папки установки» были разделены на «Отладочную сборку» и «Сборку выпуска». Другие параметры создаются с политикой их общего использования. Другие параметры могут быть разделены, но может быть громоздко хранить «файлы приложения» и «предварительные требования» отдельно.

Сначала откройте проект и введите настройки ClickOnce, как обычно. Входное содержимое задается параметрами, выдаваемыми debug, но все, кроме общей части, нормально, если это не вызывает ошибку.

Ниже приведен пример конфигурации:

После ввода сохраните проект.

Создание файла .bat для публикации ClickOnce

Поскольку он выдается вместе с командой, он может быть выполнен на других носителях, таких как PowerShell, но на этот раз он создается как BAT-файл.

Вы можете создать файл в любом месте, но для простоты я создам его в расположении файла решения (.sln). Поскольку это bat-файл, кодировка символов — Shift-JIS. PS1 может быть UTF-8 (BOM).

Откройте BAT-файл в текстовом редакторе и введите: Обратите внимание, что PowerShell может обрабатывать экранирование по-разному.

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

Первая строка указывает на расположение командной строки разработчика. Этот путь зависит от устанавливаемой версии Visual Studio.

Каждый участок пути зависит от следующих условий:

Программные файлы
Условия пути
Программные файлы
  • Если вы используете 32-разрядную ОС
  • Если используется 64-разрядная версия Visual Studio в 64-разрядной ОС
Программные файлы (x86)
  • Если используется 32-разрядная версия Visual Studio в 64-разрядной ОС
2022
Это зависит от устанавливаемой версии Visual Studio.
Сообщество
Это зависит от устанавливаемого выпуска Visual Studio. Будут введены «Сообщество», «Профессионал», «Предприятие» и т.д.

Вторая строка перемещает текущий каталог в расположение BAT-файла.

Третья строка — это команда обработки сборки ClickOnce. Значение каждого параметра заключается в следующем.

Описание имени параметра
Msbuild Команда, выполняющая процесс построения. Обязательно и написано в первую очередь.
ClickOnceBuildConfiguration.sln Описывает имя файла создаваемого решения.
/t:Publish Указывает процесс сборки ClickOnce.
/p:Configuration=Debug Задает конфигурацию построения, заданную для решения. Если вы хотите изменить конфигурацию отладки, которая будет построена, измените текст в части "Отладка".
/p:PublishUrl="publish\Debug\\" Перезапишите значение "Расположение общей папки" на экране публикации Visual Studio указанной строкой и выполните ее.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Перезапишите значение "URL-адрес папки установки" на экране публикации Visual Studio указанной строкой и выполните ее.

Некоторые параметры были извлечены, но смотрите следующие ссылки для других параметров:

В качестве примера на этот раз мы изменим параметры публикации ClickOnce в каждой сборке отладки и выпуска, поэтому создадим ее следующим образом.

Опубликовано 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\\"

Опубликованная .bat ClickOnceRelease

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 публикует выполнение BAT-файла

Попробуйте запустить каждый BAT-файл.

Запустится командная строка и начнется сборка.

На самом деле, bat-файл, созданный на этот раз, является только процессом до сборки, поэтому файл не создается в «расположении общей папки». Созданы файлы, необходимые для публикации. Например, в случае отладочной сборки у вас должен быть файл в "< пути к папке проекта >\bin\Debug\app.publish\". Скопируйте эти файлы в «URL-адрес папки установки», и он будет корректно работать как ClickOnce.

Публикация в общей папке (если местом назначения является папка, к которой у вас есть прямой доступ)

Следующий сайт используется в качестве справочного материала для этой части.

Эта область не имеет прямого отношения к обработке ClickOnce, поэтому, пожалуйста, обратитесь к вышеуказанному сайту для подробного объяснения.

Сначала откройте файл проекта (.csproj) в текстовом редакторе. Это не файл решения.

Внутри находится XML-структура, и если вы прокрутите вниз, добавьте </Project> следующий код в строку над ней. Если это процесс копирования файла, содержимое фиксируется, но часть является CopyPublishedApplication произвольной. Вы будете использовать это имя позже.

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

Сохраните его, как только вы его ввели.

Затем откройте каждый BAT-файл и добавьте в /t:CopyPublishedApplication msbuild параметры. CopyPublishedApplication это имя, которое я дал вам ранее.

Публикация ClickOnceDebug.bat (пример)

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

При запуске BAT-файла можно увидеть, что файл скопирован в расположение общей папки. В настоящее время нет < имени программы >.exe файла, но оно не нужно, поскольку оно изначально включено в программу установки.exe.

приложение

Если в решении несколько проектов, выполняется CopyPublishedApplication для всех проектов. В большинстве случаев он устанавливается только для проекта exe, поэтому при запуске в CopyPublishedApplication другом проекте будет отображаться ошибка, Его безопасно игнорировать, потому что он отображает только сообщение.

Публикация в общей папке (для FTP)

Я не пробовал это, но вы можете обратиться к следующим сайтам.

Другие вещи, которые следует иметь в виду