Я хотел скопировать встроенные файлы из моего выпуска в локальный каталог, а не в unc-ресурс.Итак, я написал действие, которое я хотел сделать так:
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));
}
);
}
}
}
Но это действие не удалось, и дайте мне знать, что каталог не был найден.Как это исправить?Мне нужна настройка, поскольку я получаю отдельные папки из двоичных файлов вручную.
Спасибо за помощь, Майкл Баарц