Змінення настройок ClickOnce залежно від вибраної конфігурації збірки (лише для версії .NET Framework)

Сторінка оновлюється :
Дата створення сторінки :

середовище

Рамках
  • Windows Forms (.NET Framework) в цілому
  • WPF (.NET Framework) в цілому

Передумови

Зміст цих порад є проектними припущеннями для .NET Framework. У випадку з .NET (Core) ви можете встановити налаштування публікації ClickOnce в блоці конфігурації збірки, тому, будь ласка, опублікуйте як зазвичай.

Це також передбачає, що у вас достатньо знань, щоб нормально використовувати ClickOnce.

Спочатку

Оскільки проект .NET Framework може мати лише одну настройку публікації ClickOnce, Наприклад, щоб опублікувати з різними налаштуваннями в збірці налагодження та збірці випуску, ви повинні щоразу вручну змінювати налаштування перед публікацією.

Ви можете мати два налаштування, згрупувавши проекти в 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. Сенс кожного параметра полягає в наступному.

опис імені параметра
мсбілд Команда, яка виконує процес побудови. Обов'язковий і написаний в першу чергу.
ClickOnceBuildКонфігурація.sln Описується ім'я файлу рішення, що будується.
/t:Publish Вказує на процес побудови ClickOnce.
/p:Configuration=Debug Визначає конфігурацію збірки, яку ви встановили для свого рішення. Якщо ви хочете змінити конфігурацію налагодження, що будується, змініть текст в частині «Налагодження».
/p:PublishUrl="publish\Debug\\" Перезапишіть значення "Розташування спільної папки" на екрані публікації Visual Studio із зазначеним рядком і виконайте його.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Перезапишіть значення "URL-адреса папки установки" на екрані публікації Visual Studio із зазначеним рядком і виконайте його.

Деякі з параметрів були витягнуті, але дивіться наступні посилання для інших параметрів:

Як зразок цього разу ми змінимо параметри публікації ClickOnce в кожному налагодженні та збірці Release, тому створимо його наступним чином.

Опубліковано 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 Опубліковано .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 публікує виконання файлів 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)

Я не пробував, але ви можете звернутися до наступних сайтів.

Інші речі, про які слід пам'ятати