2015-02-23 192 views
1

當我創建構建定義我已經安裝了一些源設置,下面的例子:防止TFS構建定義源設置從觸發構建

enter image description here

問題是,我希望它觸發一個構建時有人檢查進入構建安裝文件夾,但包括文件夾只是它需要的一些庫和其他項目。當這些庫改變時,我不希望它重新運行。不過,我需要在這裏設置它們以確保它們被複制到Build drop服務器。有沒有辦法通過這個複製包括文件夾,而不需要有人檢入此文件夾時強制生成觸發器?

+1

如果/ Includes /文件夾只是第三方引用,爲什麼不將它們放到NuGet包中並從需要它們的項目中引用它們? – 2015-02-23 22:54:28

回答

1

有兩件事情要做接近這一點。

首先,你需要得到你的源文件夾到一個構建中心佈局,這將有助於消除儘可能多的重疊越好。

如果您需要不應觸發構建的特定共享文件夾,則不要將其包含在源映射中,而應添加腳本以將文件作爲構建的早期部分下載到工作區。

的例子將需要更新您的Visual Studio版本,你應該通過源代碼目錄的腳本。

REM %1 represents the Sources directory 
    REM Compute variables 
    SET TfExe="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" 
    REM SET TfExe="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" 
    Set RefPath="$/TFS BUILDS/Shapes/Main/Includes" 
    Set localPath="%~1\Includes" 

    REM set the Drive Letter for this build 
    Set Localdrive=%localPath:~1,2% 
    %Localdrive% 
    cd %1 

    REM Map the folders 
    %TfExe% workfold /map %RefPath% %localPath% 

    REM Get the required content 
    %TfExe% get %RefPath% 

    REM Unmap the folders 
    %TfExe% workfold /unmap %RefPath% 
1

有沒有簡單的方法來做到這一點。正如您發現的那樣,源代碼設置具有雙重功能,它們定義了構建所需的一組文件,這些文件是下載文件的一組觸發配置項的文件。

我認爲這不是問題,如果包含在您的構建中使用,那麼當我們想要在構建時發佈新構建,以確保更改不會破壞構建中的任何內容處理。

+0

一個公平的點,在大多數情況下,我希望這也是如此。問題是在我的特殊情況下,包括用於另一個項目和這個項目,但這個項目使用第三方DLL幾乎不會改變。但是所有的dll都需要保存在這個Include文件夾中。 – User101 2015-02-23 16:31:14

+0

然後,您可以在源設置中使用更具體的路徑。不要映射整個包含文件夾,而只需映射構建使用/需要的文件夾。 – 2015-02-23 16:37:30