2015-02-23 89 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