Après la publication de l'événement dans Visual Studio
Je suis en train d'invoquer la simple tâche après la publication de l'événement. Quand je dis "publier", je veux dire publier dans Visual Studio, cliquez-droit sur le projet et d'appuyer sur "Publier...". J'ai inclus (Importés) objectifs de fichier dans le fichier projet qui fonctionne bien parce que j'ai déjà testé sur l'événement de construction.
J'ai trouvé à la http://msdn.microsoft.com/en-us/library/ms366724.aspx qu'il est AfterPublish événement qui devrait faire ce dont j'ai besoin, mais il ne le fait pas.
Je ne suis pas sûr si c'est un même événement qui doit déclencher sur Publier dans Visual Studio, quelqu'un merci de bien préciser ce.
Ma question est de savoir comment déclencher tout type de tâche sur les cibles fichier sur Publier dans Visual Studio?
J'ai essayé dans les objectifs de fichier:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterPublish">
<Message Label="Test"></Message>
<Warning Label="Test"></Warning>
</Target>
</Project>
Je suis à l'aide de Visual Studio 2010.
EDIT:
Je suis actuellement à la recherche d'une quelconque manière à exécuter une certaine action sur Publier dans Visual Studio. Je pensais aussi de l'ajout de générer des Événements, mais je n'ai aucune idée de la façon de déterminer si c'est de Publier en cours ou non.
EDIT:
@Alexey Shcherbak je vous remercie pour votre réponse rapide.
Je suis arriver dans mon MSBuild sortie:
12/10/2012 12:29:40 AM: Done executing task "CallTarget".
12/10/2012 12:29:40 AM: Done building target "PipelinePreDeployCopyAllFilesToOneFolder" in project "PublishTestApp.csproj".
12/10/2012 12:29:40 AM:Done building project "PublishTestApp.csproj".
Deleting existing files...
Publishing folder /...
Publishing folder Account...
Publishing folder bin...
Publishing folder Scripts...
Publishing folder Styles...
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Donc, ma tâche s'exécute juste après PipelinePreDeployCopyAllFilesToOnefolder mais avant même de composer des fichiers et je ne considère pas Publier encore été réalisé à ce point.
Bien sûr, je n'ai fait tester, donc dans la tâche MSBuild j'ai été l'exécution de la simple lecture de fichier texte qui est supposé être copié dans le dossier de publication, et il a échoué.
- ajout d'une autre partie en réponse à votre modifier
Vous devez vous connecter pour publier un commentaire.
La Publier le menu contextuel n'est pas en cours d'exécution "Publier" de la cible (si nous parlons de la publication du site web, de ne pas publier de ClickOnce package).
Si vous utilisez VS2010 - le menu contextuel exécuter "PipelinePreDeployCopyAllFilesToOnefolder" de la cible, et dans VS2012 (gardez cela à l'esprit si vous allez pour changer), il sera exécuté "MSDeployPublish" cible.
Je suppose que vous devez lire cette question et la réponse. Jez et j'ai fourni assez de réponses complètes sur la façon de crochet à l'Avant\Après la publication de la cible.
En bref, MSBuild version>=4.0, vous pouvez utiliser cette approche
@Edit1: utilisation CopyAllFilesToSingleFolderForPackage au lieu de PipelinePreDeployCopyAllFilesToOnefolder - les fichiers doivent être copiés après cette cible.
Si vous avez besoin de mettre le feu à votre cible uniquement lorsqu'il s'est lancé dans VS contexte - vérifier le lien que j'ai posté et ajouter plus de conditions à vérifier pour Visual studio lance comme ça
Condition="'$(BuildingInsideVisualStudio)'=='true' AND '$(VisualStudioVersion)'=='10.0'"
Si vous ajoutez plus de contexte comme ce genre de cible, voulez-vous lancer après la diffusion, etc. - il pourrait ajouter plus de contexte et d'aider les autres à comprendre la question
Target
que je cherchais (si il y a un blog qui décrit TOUTES les cibles de MSBuild je l'apprécie quelqu'un l'a partagée). Mon problème était que je voulais transformer des fichiers pour passer seulement sur la publication, de ne pas construire.PipelinePreDeployCopyAllFilesToOneFolder
cible de la tâche. J'ai du changer le mien, cependant,CopyAllFilesToSingleFolderForPackage
. Vous pouvez lire ma question ici -- stackoverflow.com/questions/42284979/...L'ajout de mes 2 cents
MS a confirmé, que lors de la publication du système de fichiers ils n'ont pas de cible pour lancer la suite.
Cité de cette SORTE de question
Donc ce que nous avons fini par faire, c'est:
AfterTargets="CopyAllFilesToSingleFolderForPackage"
(s'exécute juste avant que les fichiers sont copiés à l'emplacement de publication)timeout 10
de commande (attend 10 secondes) - le manque d'une meilleure façon.IMPORTANT: Cette chauve-souris de fichier doit être exécuté de manière asynchrone de sorte que le processus de publication continue après avoir été lancé, veuillez vous référer à cette SORTE de réponse sur la façon de le faire.
PublishOnly
qui a été la dernière tâche qui s'exécute, ou, au moins, il était dans mon cas.Je viens d'écrire un post sur comment j'ai obtenu ce dans Visual Studio 2013 ici: http://www.alexdresko.com/2015/02/28/taking-visual-studio-build-and-publish-events-to-the-next-level/
Essentiellement, c'est la magie:
Je vous encourage à lire le post entier pour plus d'informations.
J'ai essayé tous les autres répondre, mais ils ne fonctionne pas. Dans mon cas, je suis à la publication d'un complément VSTO avec VS2015, alors peut-être il y a quelque chose de différent, mais d'ici sont deux options qui a fait un travail:
Partie de la raison pour laquelle je (et théoriquement d'autres) a eu un moment difficile avec cela est que la
Message
tâche ne semble pas faire quoi que ce soit. Je m'attendais à du texte dans leOutput
vue, mais rien n'a été présenté. Il n'y avait pasMessage
éléments dans leError List
soit, mais en utilisantWarning
au lieu de cela, ils ont montré que dans leError List
. Malheureusement, je ne connais pas assez MSBuild dire pourquoiMessage
n'est pas se comporter comme prévu.Edit: Voir cette excellente réponse sur la façon de voir exactement où les objectifs sont en cours d'exécution.
Ma réponse par une autre question pourrait être de quelque utilité.
AfterPublish script ne s'exécute pas lorsque je publie une application web
En particulier, en utilisant le chemin d'accès à la "publié fichiers", vous pouvez passer un paramètre par
$(WebProjectOutputDir)\$(WPPAllFilesInSingleFolder)
. Ce serait quelque chose commec:\{path to *.csproj}\obj\{build configuration}\Package\PackageTmp
.