2012-04-04 28 views
1

我定制在2010年TFS团队基础建设活动中的“DownloadFiles”是给错误

默认生成过程模板,我使用“DownloadFiles”建设活动,并在服务器的路径我已经给“$/TFS /库/Foo.DLL“,当我运行执行定义其抛出错误为”访问路径'\ ServerName \ SharedFolder \ BuildName \ TempFolder'被拒绝。“

但是,当我给服务器路径为“$/TFS/Libraries”时,它将Libraries文件夹中的所有文件下载到共享的TempFolder中。

但我只需要下载一个文件。请帮助..

在此先感谢..

回答

0

您需要授予运行与共享文件夹的写权限构建服务的用户。

http://msdn.microsoft.com/en-us/library/cc668757.aspx

+1

Team Foundation Build Service正在“TFSService”用户帐户下运行,并且此帐户完全控制共享位置并添加到“Project Collection Build Service Accounts”中。下载文件夹工作正常,但下载单个文件有问题。 – BABA 2012-04-04 09:51:45

0

有两个独立的共建活动,DownloadFiles文件夹 ServerItem并为单个文件 ServerItem一个DownloadFile
我期望它应该与DownloadFile一起使用。

+0

'DownloadFile'似乎已被弃用:http://msdn.microsoft.com/en-us/library/vstudio/gg265783.aspx#Activity_Download_Files – Jonathan 2013-10-28 12:59:04

1

现在,DownloadFiles确实只有整个文件夹的工作:

  • ServerPath="$/proj/path" - 伟大工程,都被下载到LocalPath
  • ServerPath="$/proj/path/name.ext" - borked。

我去编译DownloadFiles明白为什么:首先,它得到的服务器项目的列表,在我们的例子只是$/proj/path/name.ext。然后,计算出这样的本地路径:

localItemPath = Path.Combine(LocalPath,VersionControlPath.MakeRelative(ServerItem, ServerPath));

在这一行中,活动假定ServerPath是一个路径。如果不是,那么MakeRelative将不会识别它,并且本地路径将为LocalPath/$/proj/path/name.ext,如OP观察到的。

此外,如果ServerPath不是规范 - 例如$/proj/path/../path2,也会发生同样的情况。解决方法:使用VersionControlPath.GetFullPath(myNonCanonicalPath)