Публикация веб-развертывания с использованием кода VS
В Visual Studio я использую функцию "publish web", чтобы сделать некоторые преобразования web.config и опубликовать проект WebAPI на нашем сервере. Публикация выполняется с помощью Web Deploy.
Теперь, когда я использую код Visual Studio, я потерял эту оснастку. Но я хотел бы продолжить публикацию проекта с помощью Web Deploy. Есть ли способ написать задачу VSCode, которая будет публиковать мой проект?
Visual Studio Publish использует файл [target].pubxml. У меня есть "staging.pubxml" и "production.xml". Они выглядят как файлы MSBuild. Так что, возможно, это просто вопрос выполнения задачи msbuild из кода. Не знаете, с чего начать.
Другая мысль заключается в том, что я мог бы запустить инструмент командной строки Web Deploy. Я никогда не использовал это, и кажется, что первая идея будет лучше.
Ответы
Ответ 1
Предполагая, что вы используете последний vscode сейчас (1.7.x). Вы можете использовать Visual Studio Code Runner.
Сначала вам нужно настроить бегун задачи, нажав <F1>
и ввести task
. Выберите "Задачи": "Настроить запуск задачи".
Новый файл tasks.json
будет создан vscode со следующим контентом.
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": "$msCompile"
}
]
}
Во-вторых, теперь вам нужно будет добавить новую задачу публикации. С ответом @Rolo вы можете добавить новую задачу в массив tasks
:
{
"taskName": "publish",
// Always show errors from builds.
"showOutput": "always",
"args": [
"/p:DeployOnBuild=true",
"/p:PublishProfile=Test"
]
}
В-третьих, после завершения tasks.json
. Вы можете использовать задачу publish
, нажав Ctrl
+ P
(или Cmd
+ P
на Mac) и введите task publish
.
Ответ 2
Код Visual Studio не имеет интегрированной системы сборки (Web Publish), такой как Visual Studio. Но он выполняет задачу командной строки и Git встроен.
Итак, у вас есть несколько вариантов:
1) Используйте бегун задачи, чтобы начать сборку/публикацию из палитры команд (ctrl + p). Grunt доступен в предварительном просмотре *. Для этого вам нужно вручную script, но как только это будет сделано, с этой точки легко начать выполнение задачи.
(UPDATE: в документах упоминаются другие совместимые задачи, включая: Make, Ant, Gulp, Jake, Rake или MSBuild - - И задачи .settings tasks.json имеют примеры того, как работать с вашими файлами MSBuild. Нажмите ctrl + p type: "Запустите задачу", а затем нажмите "настроить задачи" )
2) Настройте свою систему управления версиями для непрерывной интеграции, чтобы при нажатии обновления на конкретную ветвь она запускает скрипты MSBuild (или другие системы сборки) и публикует для вас сервер. Мы используем Team Foundation Server (TFS) и Git. У нас есть специальная ветка "релиз/мастер", которая настроена для сборки и публикации, когда она получает push. Он также берет некоторую начальную конфигурацию, но после завершения он автоматически. Если у вас нет TFS, попробуйте TFS в Интернете. Есть много других вариантов, но это то, что мы используем.
Я нахожусь в том же положении, в котором вы пытаетесь понять это. Я хотел бы узнать, что вы узнали.
* В соответствии с Deep Dive session на Build 2015. Хотя просмотр файла tasks.json выглядит как Gulp, а примеры MSBuild доступны в Preview.
Ответ 3
Для публикации с использованием MSBuild вам необходимо использовать следующую команду:
msbuild <Project or Solution Path> /p:DeployOnBuild=true /p:PublishProfile=<Publish Profile Name>
-
Вы можете указать на решение, это опубликует ВСЕ проекты, которые включают действительный профиль публикации:
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=Test
-
Вы можете указать конкретный проект следующим образом:
msbuild <FullPath>\Project1\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=Test
-
В обоих случаях вы также можете указать полный путь к файлу .pubxml:
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml
Фактически файлы *.pubxml являются сценариями MSBuild, поэтому вы можете взаимодействовать с ним, как и с любым другим MSBuild script, например, вы можете заменить свойства из командной строки следующим образом:
Test.pubxml
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>C:\Deploy\MyProject\</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml /p:publishUrl:"D:\DifferentPath\DifferentFolder\"
Вы можете использовать эти команды с сервера непрерывной интеграции или любых других скриптов сборки.
Дополнительная информация:
Развертывание командной строки