web-dev-qa-db-fra.com

Comment configurer MSBuild pour utiliser un profil de publication enregistré pour WebDeploy?

J'ai utilisé Visual Studio pour créer un profil de publication. Il a enregistré ces informations dans MyProject.Publish.xml, situé à la racine de mon répertoire de projet.

Je voudrais que la tâche MSBuild qui est exécutée sur mon serveur CI utilise ce fichier comme paramètres de base. Idéalement, si je pouvais remplacer les propriétés via des paramètres de ligne de commande, cela basculerait.

Est-ce possible? Si oui, quelle est la syntaxe?

Par exemple, je recherche quelque chose comme:

MSBuild MyProject.csproj /P:UsePublishProfile=True /P:UserName=deployUser /P:Password=MyPassword
32
Jim Geurts

Je suis désolé de vous dire que le fichier publish.xml utilisé par VS2010 n'a pas été conçu pour être utilisé de cette manière. En fait, il n'a même pas été conçu pour être enregistré/partagé avec d'autres.

La logique de lecture/écriture de ces fichiers est strictement contenue dans Visual Studio et n'est pas disponible via MSBuild. Il n'y a donc pas de moyen simple de faire cela aujourd'hui. Vous devez transmettre les noms/valeurs de propriétés individuelles lorsque vous appelez msbuild.exe. Vous pouvez voir une question similaire à laquelle j'ai répondu à Team Build: publier localement à l'aide de MSDeploy pour plus d'informations.

Remarque pour l'aperçu du développeur VS 11

Juste pour que vous sachiez que nous avons résolu ce problème dans la prochaine version de Visual Studio. Vous pouvez le voir en téléchargeant l'aperçu du développeur VS 11. Désormais, tous les profils sont enregistrés dans leurs propres fichiers (sous PublishProfiles dans le nœud Propriétés de l'Explorateur de solutions). Ils sont désormais conçus pour être enregistrés et partagés avec les membres de l'équipe. Ces fichiers sont désormais des fichiers MSBuild et vous pouvez les personnaliser si vous le souhaitez. Pour publier à partir de la ligne de commande, passez simplement DeployOnBuild = true et définissez PublishProfile sur le nom du profil. Par exemple:

msbuild.exe MyProject.csproj /p:DeployOnBuild=true;PublishProfile=MyProfile
43