Змінення настройок 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)
Я не пробував, але ви можете звернутися до наступних сайтів.
Інші речі, про які слід пам'ятати
- Навіть якщо ви розділите випуск ClickOnce на кілька частин, сутність розглядається як одна і та ж програма, тому, наприклад, ви не можете встановити програму, опубліковану в Debug, і програму, опубліковану з Release в одному середовищі. Для того щоб встановити, необхідно вжити таких заходів, як зміна назви кожної збірки. Будь ласка, зверніться до наступного сайту, щоб побачити, що ним ідентифікується.