私のリリースでビルドされたファイルをunc共有ではなくローカルディレクトリにコピーしたかったのです。だから私はこれをやりたい活動を書いた:TFS 2010ビルド、ローカルではなく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));
}
);
}
}
}
しかし、この活動は失敗し、そのディレクトリが見つからなかったことを知らせる。それを修正するには?私はバイナリから手動でそこにseperatフォルダを入れてカスタマイズする必要があります。助けのための
Thxを、 マイケルBaarz
を使用してコードをデバッグすることもできます。\ localhost \を使用すると、ビルドが完了した後に[Open Drop Folder]をクリックしたユーザーは開くことができません。ビルドサーバーではなくローカルマシンを参照しようとします。残念ながら、私はそれを解決する方法を知らない。 – Pierre