2010-11-19 32 views
1

J'essaye de publier un site Web en utilisant Team Build 2010, mais je n'ai pas vu d'options faciles là-bas. J'ai donc essayé de créer une activité personnalisée qui appelle un processus dans l'agent ("aspnet_compiler.exe") avec mes paramètres et publie mon site.À propos de l'équipe Construire et construire des sites Web, problème d'activité de code personnalisé

Je peux supprimer des dossiers, créer des dossiers, compiler et construire des projets ...

Mais ce processus ne démarre pas tout simplement l'agent quand je l'appelle ... quel est le problème?

protected override void Execute(CodeActivityContext context) 
    { 
     // Obtain the runtime value of the Text input argument 
     // string text = context.GetValue(this.Text); 
     Process proc = new Process(); 
     proc.EnableRaisingEvents = true; 
     proc.StartInfo.WorkingDirectory = @"C:\Windows\Microsoft.NET\Framework\v2.0.50727"; 
     proc.StartInfo.FileName = "aspnet_compiler.exe"; 
     proc.StartInfo.Arguments = "-p "+context.GetValue(this.SourcesDirectory) + 
       " -v/" + PublishDirectory; 
     proc.Start(); 
     proc.WaitForExit(); 

     while (!proc.HasExited) 
     { 
     } 

     context.SetValue(Result,proc.StandardOutput.ReadToEnd()); 
    } 

Existe-t-il un autre moyen de créer/publier des sites Web? Qu'est ce qui ne va pas avec mon code ?

+0

J'ai le même problème en utilisant invokeprocess sur aspnet_compiler. Je peux obtenir n'importe quoi pour travailler avec invokeprocess excepté le aspnet_compiler. C'est étrange. – Flores

Répondre

1

Chaque fois que TFS crée un projet/une solution, il publie automatiquement les projets/sites Web et les place dans un dossier nommé _PublishedWebsites. Vous pouvez facilement l'utiliser.

De plus, si vous devez copier/déplacer ce dossier à un autre endroit ou même si vous devez le faire avec d'autres fichiers/dossiers, vous pouvez utiliser CopyDirectory, DeleteDirectory et d'autres activités Team Foundation Build. Si vous avez encore besoin d'exécuter quelque chose pendant le processus de génération, vous pouvez utiliser l'activité de construction InvokeProcess au lieu de créer votre propre activité de génération.