Сборка приложений 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
Откройте Visual Studio и создайте новый проект.
Выберите шаблон проекта приложения Windows Forms (платформа .NET Framework) или приложения WPF (платформа .NET Framework) и назовите проект
CmdLineDemo
.В меню "Сборка " выберите команду "Опубликовать ".
Этот шаг гарантирует правильность настройки проекта для создания развертывания приложения ClickOnce.
Откроется Мастер публикации.
В мастере публикации нажмите кнопку "Готово".
Visual Studio создает и отображает веб-страницу по умолчанию с именем Publish.htm.
Сохраните проект и запишите расположение папки, в которой она хранится.
Описанные выше действия создают проект ClickOnce, опубликованный впервые. Теперь вы можете воспроизвести сборку за пределами интегрированной среды разработки.
Воспроизведение сборки из командной строки
Закройте Visual Studio.
В меню "Пуск" Windows выберите командную строку разработчика командной строки>"Сервис>".
Откроется командная строка разработчика Visual Studio.
В командной строке Visual Studio убедитесь, что текущий каталог отображает расположение созданного ранее проекта.
Если вы не работаете в каталоге проекта, введите команду, чтобы изменить нужное расположение, например
chdir C:\Users\username\source\repos\CmdLineDemo
.Чтобы удалить существующие файлы, созданные в предыдущем разделе, введите
rmdir /s publish
.Этот шаг является необязательным, но он гарантирует, что сборка командной строки создает все новые файлы.
Введите
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 копируются из PublishDir
PublishUrl
расположения.
Параметры публикации
При публикации приложения с помощью предыдущих процедур следующие свойства вставляются в файл проекта мастером публикации. Эти свойства напрямую влияют на создание приложения 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, еслиInstallUrl
UpdateUrl
и свойство не указано.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-адреса. |