web-dev-qa-db-fra.com

Publier Web Deploy à l'aide de VS Code

Dans Visual Studio, j'utilise la fonction "publier sur le Web" pour effectuer des transformations web.config et publier un projet WebAPI sur notre serveur. La publication se fait à l'aide de Web Deploy.

Maintenant que j'utilise Visual Studio Code, j'ai perdu cet outillage. Mais, je souhaite continuer à publier le projet à l'aide de Web Deploy. Existe-t-il un moyen d'écrire une tâche VSCode qui publiera mon projet?

Visual Studio Publish utilise un fichier [target] .pubxml. J'ai "staging.pubxml" et "production.xml". Ils ressemblent à des fichiers MSBuild. Donc, il s'agit peut-être simplement d'exécuter une tâche msbuild à partir de Code. Je ne sais pas par où commencer, cependant.

Une autre pensée est que je pourrais lancer un outil de ligne de commande Web Deploy. Je ne l'ai jamais utilisé, et il semble que la première idée serait meilleure.

22
AJ Morris

En supposant que vous utilisez le dernier vscode maintenant (1.7.x). Vous pouvez utiliser le Gestionnaire de tâches de Visual Studio Code.

Tout d'abord, vous devez configurer le gestionnaire de tâches en appuyant sur <F1> et entrez task. Sélectionnez Tâches: configurer le gestionnaire de tâches.

Un nouveau fichier tasks.json serait créé par vscode avec le contenu suivant.

{
    // 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"
        }
    ]
}

Deuxièmement, vous devez maintenant ajouter la nouvelle tâche de publication. Avec la réponse donnée par @Rolo, vous pouvez ajouter une nouvelle tâche dans le tableau tasks:

    {
        "taskName": "publish",
        // Always show errors from builds.
        "showOutput": "always",
        "args": [
            "/p:DeployOnBuild=true",
            "/p:PublishProfile=Test"
        ]
    }

Troisièmement, une fois que le tasks.json est terminé. Vous pouvez utiliser la tâche publish en appuyant sur Ctrl + P (ou Cmd + P sur Mac) et tapez task publish.

13
yuxhuang

Visual Studio Code n'a pas de système de génération intégré (publication Web) comme Visual Studio. Mais il a une tâche de ligne de commande en cours d'exécution et Git intégré.

Vous avez donc deux options:

1) Utilisez un lanceur de tâches pour lancer votre build/publication à partir de la palette de commandes (ctrl + p). Grunt est disponible dans l'aperçu *. Cela nécessite que vous le scriptiez manuellement, mais une fois cela fait, il est facile de lancer la tâche à partir de ce point.

(MISE À JOUR: la documentation mentionne d'autres exécuteurs de tâches compatibles, notamment: Make, Ant, Gulp, Jake, Rake ou MSBuild - ET le .settings tasks.json contient des exemples sur la façon de faire fonctionner vos fichiers MSBuild. Appuyez sur ctrl + p tapez: "exécuter la tâche" puis cliquez sur "configurer les tâches")

2) Configurez votre système de contrôle de source pour une intégration continue de sorte que lorsque vous envoyez une mise à jour à une branche spécifique, il exécute les scripts MSBuild (ou un autre système de build) et publie sur le serveur pour vous. Nous utilisons Team Foundation Server (TFS) et Git. Nous avons une branche "release/master" spécifique qui est configurée pour construire et publier lorsqu'elle reçoit un Push. Il faut également une configuration initiale, mais une fois terminé, il est automatique. Si vous n'avez pas TFS, essayez TFS en ligne. Il existe de nombreuses autres options, mais c'est ce que nous utilisons.

Je suis dans la même position que vous en essayant de comprendre celle-ci. J'aimerais savoir ce que vous découvrirez.

* Selon la session Deep Dive à Build 2015 . Bien qu'en regardant le fichier tasks.json, il semble que des exemples Gulp et MSBuild soient disponibles dans l'aperçu.

5
Dan Sorensen

Pour publier à l'aide de MSBuild, vous devez utiliser la commande suivante:

msbuild <Project or Solution Path> /p:DeployOnBuild=true /p:PublishProfile=<Publish Profile Name>
  • Vous pouvez pointer vers une solution, cela publiera TOUS les projets qui incluent un profil de publication valide:

    msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=Test
    
  • Vous pouvez pointer vers un projet spécifique comme celui-ci:

    msbuild <FullPath>\Project1\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=Test
    
  • Dans les deux cas, vous pouvez également spécifier l'utilisation du chemin d'accès complet au fichier .pubxml:

    msbuild <FullPath>\MySolution.sln /p:DeployOnBuild=true /p:PublishProfile=<FullPath>\PublishProfiles\Test.pubxml
    

En fait, les fichiers * .pubxml sont des scripts MSBuild, vous pouvez donc interagir avec lui comme vous le faites avec n'importe quel autre script MSBuild, par exemple, vous pouvez remplacer les propriétés de la ligne de commande comme ceci:

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\"

Vous pouvez utiliser ces commandes à partir de votre serveur d'intégration continue ou de tout autre script de génération.

Informations supplémentaires:

Déploiement en ligne de commande

4
Rolo