2012-04-04 46 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)