0
我想将我的发行版上的内置文件复制到本地目录,而不是共享。所以我写了一个我想这样做的活动:TFS 2010内置,放置位置本地不共享共享
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));
}
);
}
}
}
但是这个活动失败,让我知道该目录没有找到。如何解决它?我需要通过手动从二进制文件中获取seperat文件夹进行定制。
THX的帮助, 迈克尔Baarz
调试您的代码如果您使用\ localhost \,则在构建完成后单击“打开拖放文件夹”的用户无法打开它。它试图浏览到他们的本地机器,而不是构建服务器。不幸的是,我不知道如何解决这个问题。 – Pierre 2015-08-25 06:54:42