J'ai voulu copier les fichiers construits sur ma version construits dans un répertoire local, pas sur un partage unc. Donc, je l'ai écrit une activité que je voulais faire:TFS 2010 construit, drop local local non unc share
using System.Activities;
using System.IO;
using System.Linq;
using Microsoft.TeamFoundation.Build.Client;
namespace CustomBuiltActivities
{
/// <summary>
/// This activity helps to copy a directory to another one. Integrated in TeamFoundation built activities are only supporting
/// copy to an unc share, so this is a small helper activity we need for copying files to an local directory.
/// </summary>
[BuildActivity(HostEnvironmentOption.Agent)]
public sealed class CopyDirectoryLocal : CodeActivity
{
[RequiredArgument]
public InArgument<string> DestinationDirectory { get; set; }
[RequiredArgument]
public InArgument<string> SourceDirectory { get; set; }
protected override void Execute(CodeActivityContext context)
{
var destination = context.GetValue(DestinationDirectory);
var source = context.GetValue(SourceDirectory);
CopyRecursive(source, destination);
}
private static void CopyRecursive(string sourceDirectory, string destinationDirectory)
{
if (!Directory.Exists(sourceDirectory))
throw new DirectoryNotFoundException(sourceDirectory);
try
{
Directory.CreateDirectory(destinationDirectory);
}
catch
{
}
Directory.GetDirectories(sourceDirectory).ToList().ForEach(
sourceDir =>
{
var dirName = sourceDir.Substring(sourceDir.LastIndexOf("\\"));
CopyRecursive(sourceDir, destinationDirectory+"\\"+dirName);
});
Directory.GetFiles(sourceDirectory).ToList().ForEach(
sourceFile =>
{
var fileName = new FileInfo(sourceFile).Name;
File.Copy(sourceFile, string.Concat(destinationDirectory, "\\", fileName));
}
);
}
}
}
Mais cette activité tombe en panne et laissez-moi savoir que le répertoire n'a pas été trouvé. Comment le réparer? J'ai besoin de personnalisation en récupérant manuellement les dossiers séparés des binaires.
Thx pour l'aide, Michael Baarz
Si vous utilisez \ localhost \, les utilisateurs qui cliquent sur "Open Drop Folder" après la fin de la construction ne peuvent pas l'ouvrir. Il essaie de naviguer vers leur machine locale, pas le serveur de construction. Malheureusement, je ne sais pas comment résoudre cela. – Pierre