28 votes

Team Build: Publier localement à l'aide de MSDeploy

Je suis juste de commencer avec l'équipe de la construction de la fonctionnalité et de je suis la recherche de la quantité de choses nécessaires pour faire quelque chose d'assez simple, un peu écrasante. Ma configuration est à l'heure actuelle une solution avec une application web, une assemblée d'application et une application de test. L'application web a un PublishProfile qui publie via le système de fichiers.

J'ai un build TFS définition qui s'appuie actuellement l'ensemble de la solution, tous les soirs, et le laisse tomber sur un partage réseau comme une sauvegarde des anciennes versions. Tout ce que je veux faire maintenant, c'est avoir la PublishProfile j'ai déjà publier l'application web pour moi. Je suis sûr que c'est vraiment simple, mais j'ai joué avec MSBuild commandes pour une journée complète maintenant avec pas de chance. À l'aide!

50voto

Sayed Ibrahim Hashimi Points 25707

Malheureusement, le partage de la publication du Profil n'est pas pris en charge ou mis en œuvre dans MSBuild. La logique de publier le profil est contenue dans VS lui-même. Heureusement, le profil ne contient pas beaucoup d'informations donc, il ya des façons d'obtenir ce que vous cherchez. Nos objectifs ne sont pas spécifiquement exactement les mêmes étapes suivie par le dialogue publier, mais pour obtenir le même résultat à partir d'esprit d'équipe, vous avez deux choix, je vais exposer ici.

Lorsque vous configurez votre Équipe définition de Build pour déployer vous devez passer dans certaines valeurs pour les MSBuild Arguments pour le processus de génération. Voir l'image ci-dessous où j'ai mis en lumière cette. alt text

Option 1: Passer les arguments suivants:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

Laissez-moi vous expliquer ces paramètres un peu, de vous montrer le résultat alors expliquer l'option suivante. DeployOnBuild=true:Ceci indique le projet d'exécuter les cible(s) défini dans l' DeployTarget de la propriété.

DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder: Ceci spécifie le DeployTarget cible.

PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish": Indique l'emplacement où les fichiers de package sera écrit. C'est l'emplacement où les fichiers sont écrits avant qu'ils ne soient emballés.

AutoParameterizationWebConfigConnectionStrings=false: Ceci indique la Publication Web Pipeline (WPP) pour ne pas paramétrer les chaînes de connexion dans le web.fichier de configuration. Si vous ne spécifiez pas de cela, alors votre connexion de la chaîne de valeurs seront remplacés par des espaces réservés comme $(ReplacableToken_dummyConStr-Web.config Connexion String_0)

Après vous faites cela, vous pouvez lancer une de construire ensuite à l'intérieur de la PackageTempRootDir emplacement, vous trouverez un PackageTmp dossier et il contient le contenu que vous recherchez.

Option 2: Donc pour l'option précédente, vous avez probablement remarqué qu'il crée un dossier nommé PackageTmp et si vous ne voulez pas cela, alors vous pouvez utiliser les options suivantes à la place.

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

La différence est qu'au lieu de PackageTempRootDir vous voulez passer en _PackageTempDir. La raison pour laquelle je ne suggère pas que pour commencer, c'est parce que MSBuild propriétés commençant par _ signifier que la propriété essentiellement en "interne", dans le sens que dans une future version, il peut signifier quelque chose d'autre ou ne pas exister du tout. Donc à utiliser à vos propres risques.

Option 3

Avec tout ce que dit, vous pouvez simplement utiliser la génération de package de votre site web. Si vous voulez faire cela, puis utilisez les arguments suivants.

/p:DeployOnBuild=true;DeployTarget=Package

Quand vous faites cela dans le dossier de dépôt de votre build, vous trouverez la _PublishedWebsites dossier comme vous le feriez normalement, puis à l'intérieur de qu'il y aura un dossier {ProjectName}_Package où {ProjectName} est le nom du projet. Ce dossier va contenir le colis, l' .cmd fichier, le fichier de paramètres et de quelques autres. Vous pouvez utiliser ces fichiers pour déployer votre site web.

J'espère que ce n'était pas de l'information sur la charge.

1voto

Mike Beeler Points 3046

La possibilité de publier des sites web, configurer IIS et pousser les modifications de schéma pour la DEV->QA->cycle de développement a requis une configuration personnalisée pour imiter de publier ou de code personnalisé où les paramètres IIS sont impliqués.

Visual Studio 2013.2 Microsoft a ajouté un produit tiers qui gère le déploiement de sites web, des changements de configuration et de déploiement de base de données avec windows workflow et serait la solution recommandée pour l'automatisation du déploiement de build TFS.

Plus d'informations peuvent être trouvées ici:

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx

-1voto

Ewald Hofman Points 9475

Vous pouvez utiliser le Publish/Deploy in Visual Studio 2010.

Voir http://www.ewaldhofman.nl/post/2010/04/12/Auto-deployment-of-my-web-application-with-Team-Build-2010-to-add-Interactive-Testing.aspx pour plus d'informations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X