Сборка приложений ClickOnce из командной строки

В Visual Studio можно создавать проекты из командной строки, даже если они созданы в интегрированной среде разработки (IDE). Фактически можно перестроить проект, созданный с помощью Visual Studio, на другом компьютере с установленным платформа .NET Framework. Эта возможность позволяет воспроизвести сборку с помощью автоматизированного процесса, например в центральной лаборатории сборки или с расширенными методами скриптов за пределами область сборки самого проекта.

Примечание.

Сведения о создании приложений .NET ClickOnce из командной строки см. в разделе "Сборка приложений .NET ClickOnce" из командной строки.

Использование MSBuild для воспроизведения развертываний приложений ClickOnce платформа .NET Framework

При вызове msbuild /target:publish в командной строке эта команда указывает системе MSBuild создать проект и создать приложение ClickOnce в папке публикации. Эта команда эквивалентна выбору команды "Опубликовать" в интегрированной среде разработки.

Эта команда выполняет msbuild.exe, которая находится в пути в среде командной строки Visual Studio.

"Target" — это индикатор MSBuild по обработке команды. Ключевыми целевыми объектами являются целевой объект сборки и целевой объект публикации. Целевой объект сборки эквивалентен выбору команды сборки (или нажатию клавиши F5) в интегрированной среде разработки. Если вы хотите создать проект, введите msbuildего. Эта команда работает, так как целевой объект сборки является целевым объектом по умолчанию для всех проектов, созданных Visual Studio. В результате не нужно явно указывать целевой объект сборки. Поэтому ввод msbuild является той же операцией, что и ввод msbuild /target:build.

Команда /target:publish сообщает MSBuild вызвать целевой объект публикации. Целевой объект публикации зависит от целевого объекта сборки, что означает, что операция публикации является супермножеством операции сборки. Например, если вы внесли изменения в исходные файлы Visual Basic или C#, операция публикации автоматически перестраивает соответствующую сборку.

Сведения о создании полного развертывания ClickOnce с помощью средства командной строки Mage.exe для создания манифеста ClickOnce см. в пошаговом руководстве по развертыванию приложения ClickOnce вручную.

Создание и создание базового приложения ClickOnce с помощью MSBuild

Проще всего создать профиль публикации с помощью Visual Studio. Для публикации с помощью MSBuild требуется профиль публикации.

Создание и публикация проекта ClickOnce

  1. Откройте Visual Studio и создайте новый проект.

    Выберите шаблон проекта приложения Windows Forms (платформа .NET Framework) или приложения WPF (платформа .NET Framework) и назовите проектCmdLineDemo.

  2. В меню "Сборка " выберите команду "Опубликовать ".

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

    Откроется Мастер публикации.

  3. В мастере публикации нажмите кнопку "Готово".

    Visual Studio создает и отображает веб-страницу по умолчанию с именем Publish.htm.

  4. Сохраните проект и запишите расположение папки, в которой она хранится.

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

Воспроизведение сборки из командной строки

  1. Закройте Visual Studio.

  2. В меню "Пуск" Windows выберите командную строку разработчика командной строки>"Сервис>".

    Откроется командная строка разработчика Visual Studio.

  3. В командной строке Visual Studio убедитесь, что текущий каталог отображает расположение созданного ранее проекта.

    Если вы не работаете в каталоге проекта, введите команду, чтобы изменить нужное расположение, например chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Чтобы удалить существующие файлы, созданные в предыдущем разделе, введите rmdir /s publish.

    Этот шаг является необязательным, но он гарантирует, что сборка командной строки создает все новые файлы.

  5. Введите msbuild /target:publish.

    Описанные выше действия создают полное развертывание приложения ClickOnce в подпапке проекта с именем Publish. CmdLineDemo.application — это манифест развертывания ClickOnce. Папка CmdLineDemo_1.0.0.0.0 содержит файлы CmdLineDemo.exe и CmdLineDemo.exe.manifest, манифест приложения ClickOnce. Setup.exe — это загрузчик, который по умолчанию настроен для установки платформа .NET Framework. Папка DotNetFX содержит распространяемые файлы для платформа .NET Framework. Файлы в этом расположении состоят из всего набора файлов, необходимых для развертывания приложения через Интернет или через UNC или CD/DVD.

Примечание.

Система MSBuild использует параметр PublishDir , чтобы указать расположение выходных данных, например msbuild /t:publish /p:PublishDir="<specific location>".

Публикация выходных данных процесса

MSBuild использует PublishDir свойство для задания расположения выходных данных сборки, включая артефакты сборки. ЗначениеPublishDir, которое MSBuild использует в качестве назначения для публикации, по умолчанию получается из PublishDir свойства в файле проекта (платформа .NET Framework). Это поведение можно переопределить в командной строке MSBuild с помощью переключателя /p . При переопределении параметра выходные данные публикации переходят в указанное расположение. Выходные данные создаются на этапе публикации MSBuild. Любой целевой объект MSBuild с запусками AfterTargets="ClickOncePublish" после этого копирования.

Свойство PublishUrl , в отличие от PublishDirэтого, не используется на шаге MSBuild. PublishUrl игнорируется при вызове MSBuild непосредственно для публикации из командной строки.

При запуске публикации в интегрированной среде разработки Visual Studio Visual Studio вызывает MSBuild для публикации артефактов в расположении PublishDir . После завершения этого шага MSBuild Visual Studio публикует файлы, относящиеся к ClickOnce, в расположение, на которое указывает PublishUrl. Этот второй шаг выполняется внутри процесса Visual Studio. Вы не можете внедрить какой-либо целевой объект или задачу для выполнения на этом шаге, так как это процесс Visual Studio.

Для развертываний MSBuild, которые не используют Visual Studio, скопируйте все файлы в каталог развертывания в место развертывания или носитель. Каталог развертывания может быть папкой на веб-сайте или FTP-сайте, общей папке или компакт-диске. Например, можно использовать стороннее средство или пользовательскую задачу MSBuild для копирования файлов ClickOnce.

Для любой последующей обработки в папке PublishUrl необходимо иметь отдельный скрипт.

Важно!

Если PublishDir задано то же расположение, что PublishUrlи, повторяющиеся выходные данные компиляции копируются в PublishUrl расположение. Эту проблему можно избежать в Visual Studio 2022 версии 17.4 и более поздних версиях, создав новый профиль. Новый профиль задает PublishDir расположение, отличное от PublishUrlрасположения. В конце операции публикации соответствующие файлы ClickOnce копируются из PublishDirPublishUrl расположения.

Параметры публикации

При публикации приложения с помощью предыдущих процедур следующие свойства вставляются в файл проекта мастером публикации. Эти свойства напрямую влияют на создание приложения ClickOnce.

В CmdLineDemo.vbproj / CmdLineDemo.csproj:

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Для платформа .NET Framework проектов можно переопределить эти свойства в командной строке без изменения самого файла проекта. Например, следующий код создает развертывание приложения ClickOnce без загрузчика:

msbuild /target:publish /property:BootstrapperEnabled=false

Свойства публикации управляются в Visual Studio на страницах свойств публикации, безопасности и подписывания конструктора проектов.

Следующие свойства публикации задаются на различных страницах свойств конструктора приложений.

  • AssemblyOriginatorKeyFile определяет файл ключа, используемый для подписи манифестов приложения ClickOnce. Этот же ключ также можно использовать для назначения строгого имени сборкам. Это свойство задано на странице подписывания конструктора проектов.

На странице "Безопасность" задаются следующие свойства:

  • Включить функцию "Безопасность ClickOnce" Параметры определяет, создаются ли манифесты ClickOnce. При первоначальном создании проекта по умолчанию создается манифест ClickOnce. Мастер автоматически включает этот флаг при первом публикации.

  • TargetZone определяет уровень доверия, который будет выдаваться в манифест приложения ClickOnce. Возможные значения: "Интернет", "LocalIntranet" и "Custom". Интернет и LocalIntranet вызывают создание набора разрешений по умолчанию в манифест приложения ClickOnce. LocalIntranet — это значение по умолчанию, и в основном это означает полное доверие. Пользователь указывает, что в манифест приложения ClickOnce необходимо создать только явные разрешения, указанные в базовом файле app.manifest . Файл app.manifest — это частичный файл манифеста, содержащий только определения сведений доверия. Это скрытый файл, автоматически добавленный в проект при настройке разрешений на странице "Безопасность ".

На странице публикации задаются следующие свойства:

  • PublishUrl — расположение, в котором приложение публикуется в интегрированной среде разработки. Он вставляется в манифест приложения ClickOnce, если InstallUrlUpdateUrl и свойство не указано.

  • ApplicationVersion указывает версию приложения ClickOnce. Версия — это четырехзначное число. Если последняя цифра — "*" (звездочка), то ApplicationRevision значение вставляется в манифест во время сборки.

  • ApplicationRevision указывает редакцию. Это значение является целым числом, которое увеличивается при каждой публикации в интегрированной среде разработки. Обратите внимание, что он не увеличивается автоматически для сборок, выполняемых в командной строке.

  • Install определяет, является ли приложение установленным приложением или запуском из веб-приложения.

  • InstallUrl (не отображается) — это расположение, из которого пользователи устанавливают приложение. Если задано, это значение будет записано в загрузчик setup.exe , если IsWebBootstrapper свойство включено. Он также вставляется в манифест приложения, если UpdateUrl он не указан.

  • SupportUrl (не отображается) — это расположение, связанное в диалоговом окне "Добавление и удаление программ " для установленного приложения.

Следующие свойства задаются в диалоговом окне "Приложение Обновления" с страницы публикации.

  • UpdateEnabledуказывает, должно ли приложение проверка для обновлений.

  • UpdateMode указывает обновления переднего плана или фоновые обновления.

  • UpdateIntervalуказывает, как часто приложение должно проверка для обновлений.

  • UpdateIntervalUnits указывает, находится ли UpdateInterval значение в единицах в часах, днях или неделях.

  • UpdateUrl (не отображается) — это расположение, из которого приложение получает обновления. Если задано, это значение вставляется в манифест приложения.

Следующие свойства задаются в диалоговом окне "Параметры публикации" с помощью страницы публикации .

  • PublisherName указывает имя издателя, отображаемого в командной строке при установке или запуске приложения. Для установленного приложения он также используется для указания имени папки в меню "Пуск ".

  • ProductName указывает имя продукта, отображаемого в запросе при установке или запуске приложения. Для установленного приложения он также используется для указания ярлыка в меню "Пуск ".

Следующие свойства задаются в диалоговом окне "Предварительные требования" , доступ к который получен на странице публикации .

  • BootstrapperEnabled определяет, следует ли создать загрузчик setup.exe .

  • IsWebBootstrapper определяет, работает ли загрузчик setup.exe через Интернет или в режиме на диске.

Параметры использования: InstallURL, SupportUrl, PublishURL, UpdateURL

В следующей таблице показаны четыре варианта URL-адреса развертывания ClickOnce.

Параметр URL-адреса Description
PublishURL Требуется опубликовать приложение ClickOnce на веб-сайте.
InstallURL Необязательно. Задайте этот параметр URL-адреса, если сайт установки отличается от PublishURLсайта установки. Например, можно задать PublishURL путь к FTP и задать InstallURL для веб-URL-адреса.
SupportURL Необязательно. Задайте этот параметр URL-адреса, если сайт поддержки отличается от сайта поддержки PublishURL. Например, можно задать SupportURL веб-сайт поддержки клиентов вашей компании.
UpdateURL Необязательно. Задайте этот параметр URL-адреса, если расположение обновления отличается от InstallURLрасположения обновления. Например, можно задать PublishURL путь к FTP и задать UpdateURL для веб-URL-адреса.