當我創建構建定義我已經安裝了一些源設置,下面的例子:防止TFS構建定義源設置從觸發構建
問題是,我希望它觸發一個構建時有人檢查進入構建或安裝文件夾,但包括文件夾只是它需要的一些庫和其他項目。當這些庫改變時,我不希望它重新運行。不過,我需要在這裏設置它們以確保它們被複制到Build drop服務器。有沒有辦法通過這個複製包括文件夾,而不需要有人檢入此文件夾時強制生成觸發器?
當我創建構建定義我已經安裝了一些源設置,下面的例子:防止TFS構建定義源設置從觸發構建
問題是,我希望它觸發一個構建時有人檢查進入構建或安裝文件夾,但包括文件夾只是它需要的一些庫和其他項目。當這些庫改變時,我不希望它重新運行。不過,我需要在這裏設置它們以確保它們被複制到Build drop服務器。有沒有辦法通過這個複製包括文件夾,而不需要有人檢入此文件夾時強制生成觸發器?
有兩件事情要做接近這一點。
首先,你需要得到你的源文件夾到一個構建中心佈局,這將有助於消除儘可能多的重疊越好。
如果您需要不應觸發構建的特定共享文件夾,則不要將其包含在源映射中,而應添加腳本以將文件作爲構建的早期部分下載到工作區。
的例子將需要更新您的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%
有沒有簡單的方法來做到這一點。正如您發現的那樣,源代碼設置具有雙重功能,它們定義了構建所需的一組文件,這些文件是下載文件的一組觸發配置項的文件。
我認爲這不是問題,如果包含在您的構建中使用,那麼當我們想要在構建時發佈新構建,以確保更改不會破壞構建中的任何內容處理。
一個公平的點,在大多數情況下,我希望這也是如此。問題是在我的特殊情況下,包括用於另一個項目和這個項目,但這個項目使用第三方DLL幾乎不會改變。但是所有的dll都需要保存在這個Include文件夾中。 – User101 2015-02-23 16:31:14
然後,您可以在源設置中使用更具體的路徑。不要映射整個包含文件夾,而只需映射構建使用/需要的文件夾。 – 2015-02-23 16:37:30
使用特殊關鍵字***_NO_CI***
在你簽入包括目錄。
如果/ Includes /文件夾只是第三方引用,爲什麼不將它們放到NuGet包中並從需要它們的項目中引用它們? – 2015-02-23 22:54:28