2014-01-14 47 views
2

我在我的tfs構建配置中使用MyProj.proj文件作爲'Projects To Build'。TFS構建輸出未複製到放置文件夾

C++,C#和VB.Net解決方案列在MyProj.proj中。每個解決方案都具有相同的輸出目錄 - Bin文件夾(C:\ Builds ... \ MyProject \ Bin),因此所有構建工件(dll,exe文件,..)都放置在那裏後成功構建。

我想複製C:\ Builds ... \ MyProject \ Bin到tfs構建成功完成時在其他框上的drop文件夾中。爲此我查複製建立輸出到隨後的投遞文件夾複選框,並指定UNC路徑\\ OtherBoxFromMyNetwork \ BuildArtifacts

但它不爲我工作。我看到名稱根據內部版本號的文件夾是在一個下拉文件夾中創建的: \ OtherBoxFromMyNetwork \ BuildArtifacts \ MyProject \ Build_Number,但它只包含日誌文件夾,因此Bin目錄未被複制。爲什麼?

回答

0

TFS生成覆蓋OutputPath MSBuild屬性(C#和其他項目默認情況下)。這會強制輸出到TFS構建服務器上的不同目錄中,並且這個目錄被複制到Build Drops中。在構建服務器工作目錄中的文件夾結構是這樣的:

C:\Builds\1\TeamProjectName\BuildName\src\ 
C:\Builds\1\TeamProjectName\BuildName\bin\ 

你的代碼和凸出和SLN文件將成爲的\ src \文件夾下,但TFS生成重定向所有輸出到bin文件夾被複制到最後的Build Drops。注意:bin文件夾與典型的bin \ debug文件夾不在同一位置。

+0

Dylan,我看到C:\ Builds \ 1 \ TeamProjectName \ BuildName \ bin在我的情況下是空的。這就是爲什麼在最後沒有任何東西被複制到Build Drops的原因。 我的所有二進制文件都存儲在這裏:C:\ Builds \ 1 \ TeamProjectName \ BuildName \ src \ Bin 我認爲在每個解決方案中更改OutputPath並不是一個好主意。我應該將C:\ Builds \ 1 \ TeamProjectName \ BuildName \ src \ Bin的內容複製到C:\ Builds \ 1 \ TeamProjectName \ BuildName \ bin嗎?這是一個正確的方法嗎? – AndreyS

+0

沒有,這是不正確的做法。正確的方法是確保您的項目尊重OutputPath MSBuild屬性的值並將輸出放在正確的位置。默認情況下,C#項目可以做到這一點,你必須改變一些東西。我懷疑,因爲你說你有一個.proj文件,你使用的是一個自定義的MSBuild文件,如果是的話確保它接受並使用OutputPath屬性。 –

+0

TF使用OutDir而不是OutputPath。更多關於這兩者之間的區別:http://blogs.clariusconsulting.net/kzu/outdir-vs-outputpath/。 – Joop

相關問題